|
|
|
|
@ -1,6 +1,6 @@ |
|
|
|
|
import React, { PureComponent } from 'react'; |
|
|
|
|
import { hot } from 'react-hot-loader'; |
|
|
|
|
import { connect } from 'react-redux'; |
|
|
|
|
import { connect, ConnectedProps } from 'react-redux'; |
|
|
|
|
import { NavModel } from '@grafana/data'; |
|
|
|
|
import { getNavModel } from 'app/core/selectors/navModel'; |
|
|
|
|
import config from 'app/core/config'; |
|
|
|
|
@ -29,39 +29,17 @@ import { UserOrgs } from './UserOrgs'; |
|
|
|
|
import { GrafanaRouteComponentProps } from 'app/core/navigation/types'; |
|
|
|
|
import { contextSrv } from 'app/core/core'; |
|
|
|
|
|
|
|
|
|
interface Props extends GrafanaRouteComponentProps<{ id: string }> { |
|
|
|
|
interface OwnProps extends GrafanaRouteComponentProps<{ id: string }> { |
|
|
|
|
navModel: NavModel; |
|
|
|
|
user: UserDTO; |
|
|
|
|
user?: UserDTO; |
|
|
|
|
orgs: UserOrg[]; |
|
|
|
|
sessions: UserSession[]; |
|
|
|
|
ldapSyncInfo: SyncInfo; |
|
|
|
|
ldapSyncInfo?: SyncInfo; |
|
|
|
|
isLoading: boolean; |
|
|
|
|
error: UserAdminError; |
|
|
|
|
|
|
|
|
|
loadAdminUserPage: typeof loadAdminUserPage; |
|
|
|
|
revokeSession: typeof revokeSession; |
|
|
|
|
revokeAllSessions: typeof revokeAllSessions; |
|
|
|
|
updateUser: typeof updateUser; |
|
|
|
|
setUserPassword: typeof setUserPassword; |
|
|
|
|
disableUser: typeof disableUser; |
|
|
|
|
enableUser: typeof enableUser; |
|
|
|
|
deleteUser: typeof deleteUser; |
|
|
|
|
updateUserPermissions: typeof updateUserPermissions; |
|
|
|
|
addOrgUser: typeof addOrgUser; |
|
|
|
|
updateOrgUserRole: typeof updateOrgUserRole; |
|
|
|
|
deleteOrgUser: typeof deleteOrgUser; |
|
|
|
|
syncLdapUser: typeof syncLdapUser; |
|
|
|
|
error?: UserAdminError; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface State { |
|
|
|
|
// isLoading: boolean;
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export class UserAdminPage extends PureComponent<Props, State> { |
|
|
|
|
state = { |
|
|
|
|
// isLoading: true,
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
export class UserAdminPage extends PureComponent<Props> { |
|
|
|
|
async componentDidMount() { |
|
|
|
|
const { match, loadAdminUserPage } = this.props; |
|
|
|
|
loadAdminUserPage(parseInt(match.params.id, 10)); |
|
|
|
|
@ -73,7 +51,7 @@ export class UserAdminPage extends PureComponent<Props, State> { |
|
|
|
|
|
|
|
|
|
onPasswordChange = (password: string) => { |
|
|
|
|
const { user, setUserPassword } = this.props; |
|
|
|
|
setUserPassword(user.id, password); |
|
|
|
|
user && setUserPassword(user.id, password); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onUserDelete = (userId: number) => { |
|
|
|
|
@ -90,42 +68,41 @@ export class UserAdminPage extends PureComponent<Props, State> { |
|
|
|
|
|
|
|
|
|
onGrafanaAdminChange = (isGrafanaAdmin: boolean) => { |
|
|
|
|
const { user, updateUserPermissions } = this.props; |
|
|
|
|
updateUserPermissions(user.id, isGrafanaAdmin); |
|
|
|
|
user && updateUserPermissions(user.id, isGrafanaAdmin); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onOrgRemove = (orgId: number) => { |
|
|
|
|
const { user, deleteOrgUser } = this.props; |
|
|
|
|
deleteOrgUser(user.id, orgId); |
|
|
|
|
user && deleteOrgUser(user.id, orgId); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onOrgRoleChange = (orgId: number, newRole: string) => { |
|
|
|
|
const { user, updateOrgUserRole } = this.props; |
|
|
|
|
updateOrgUserRole(user.id, orgId, newRole); |
|
|
|
|
user && updateOrgUserRole(user.id, orgId, newRole); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onOrgAdd = (orgId: number, role: string) => { |
|
|
|
|
const { user, addOrgUser } = this.props; |
|
|
|
|
addOrgUser(user, orgId, role); |
|
|
|
|
user && addOrgUser(user, orgId, role); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onSessionRevoke = (tokenId: number) => { |
|
|
|
|
const { user, revokeSession } = this.props; |
|
|
|
|
revokeSession(tokenId, user.id); |
|
|
|
|
user && revokeSession(tokenId, user.id); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onAllSessionsRevoke = () => { |
|
|
|
|
const { user, revokeAllSessions } = this.props; |
|
|
|
|
revokeAllSessions(user.id); |
|
|
|
|
user && revokeAllSessions(user.id); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
onUserSync = () => { |
|
|
|
|
const { user, syncLdapUser } = this.props; |
|
|
|
|
syncLdapUser(user.id); |
|
|
|
|
user && syncLdapUser(user.id); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
render() { |
|
|
|
|
const { navModel, user, orgs, sessions, ldapSyncInfo, isLoading } = this.props; |
|
|
|
|
// const { isLoading } = this.state;
|
|
|
|
|
const isLDAPUser = user && user.isExternal && user.authLabels && user.authLabels.includes('LDAP'); |
|
|
|
|
const canReadSessions = contextSrv.hasPermission(AccessControlAction.UsersAuthTokenList); |
|
|
|
|
const canReadLDAPStatus = contextSrv.hasPermission(AccessControlAction.LDAPStatusRead); |
|
|
|
|
@ -198,4 +175,6 @@ const mapDispatchToProps = { |
|
|
|
|
syncLdapUser, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(UserAdminPage)); |
|
|
|
|
const connector = connect(mapStateToProps, mapDispatchToProps); |
|
|
|
|
type Props = OwnProps & ConnectedProps<typeof connector>; |
|
|
|
|
export default hot(module)(connector(UserAdminPage)); |
|
|
|
|
|