2018-08-13 16:33:56 +02:00
|
|
|
// @flow
|
|
|
|
|
import React from "react";
|
|
|
|
|
import { translate } from "react-i18next";
|
|
|
|
|
import Subtitle from "../../../components/layout/Subtitle";
|
2018-08-16 10:55:39 +02:00
|
|
|
import AdminGroupTable from "../table/AdminGroupTable";
|
|
|
|
|
import ProxySettings from "./ProxySettings";
|
|
|
|
|
import AdminUserTable from "../table/AdminUserTable";
|
|
|
|
|
import AddAdminGroupField from "../fields/AddAdminGroupField";
|
|
|
|
|
import AddAdminUserField from "../fields/AddAdminUserField";
|
2018-08-13 16:33:56 +02:00
|
|
|
|
|
|
|
|
type Props = {
|
|
|
|
|
adminGroups: string[],
|
|
|
|
|
adminUsers: string[],
|
|
|
|
|
t: string => string,
|
|
|
|
|
onChange: (boolean, any, string) => void
|
|
|
|
|
};
|
|
|
|
|
//TODO: Einbauen!
|
|
|
|
|
class AdminSettings extends React.Component<Props> {
|
|
|
|
|
render() {
|
2018-08-16 10:55:39 +02:00
|
|
|
const { t, adminGroups, adminUsers } = this.props;
|
2018-08-13 16:33:56 +02:00
|
|
|
|
|
|
|
|
return (
|
2018-08-16 10:55:39 +02:00
|
|
|
<div>
|
|
|
|
|
<Subtitle subtitle={t("admin-settings.name")} />
|
|
|
|
|
<AdminGroupTable
|
|
|
|
|
adminGroups={adminGroups}
|
|
|
|
|
onChange={(isValid, changedValue, name) =>
|
|
|
|
|
this.props.onChange(isValid, changedValue, name)
|
|
|
|
|
}
|
|
|
|
|
/>
|
|
|
|
|
<AddAdminGroupField addGroup={this.addGroup} />
|
|
|
|
|
<AdminUserTable
|
|
|
|
|
adminUsers={adminUsers}
|
|
|
|
|
onChange={(isValid, changedValue, name) =>
|
|
|
|
|
this.props.onChange(isValid, changedValue, name)
|
|
|
|
|
}
|
|
|
|
|
/>
|
|
|
|
|
<AddAdminUserField addUser={this.addUser} />
|
|
|
|
|
</div>
|
2018-08-13 16:33:56 +02:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2018-08-16 10:55:39 +02:00
|
|
|
addGroup = (groupname: string) => {
|
|
|
|
|
if (this.isAdminGroupMember(groupname)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.props.onChange(
|
|
|
|
|
true,
|
|
|
|
|
[...this.props.adminGroups, groupname],
|
|
|
|
|
"adminGroups"
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
isAdminGroupMember = (groupname: string) => {
|
|
|
|
|
return this.props.adminGroups.includes(groupname);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
addUser = (username: string) => {
|
|
|
|
|
if (this.isAdminUserMember(username)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.props.onChange(
|
|
|
|
|
true,
|
|
|
|
|
[...this.props.adminUsers, username],
|
|
|
|
|
"adminUsers"
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
isAdminUserMember = (username: string) => {
|
|
|
|
|
return this.props.adminUsers.includes(username);
|
|
|
|
|
};
|
2018-08-13 16:33:56 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default translate("config")(AdminSettings);
|