grafana/public/app/features/org/org_users_ctrl.ts

112 lines
2.6 KiB
TypeScript
Raw Normal View History

import config from 'app/core/config';
import coreModule from 'app/core/core_module';
2017-07-31 07:39:33 -05:00
import Remarkable from 'remarkable';
2016-02-13 19:55:49 -06:00
export class OrgUsersCtrl {
user: any;
users: any;
pendingInvites: any;
editor: any;
navModel: any;
2017-07-31 07:39:33 -05:00
externalUserMngLinkUrl: string;
externalUserMngLinkName: string;
externalUserMngInfo: string;
addUsersBtnName: string;
2016-02-13 19:55:49 -06:00
/** @ngInject */
constructor(private $scope, private backendSrv, navModelSrv, $sce) {
2016-02-13 19:55:49 -06:00
this.user = {
loginOrEmail: '',
role: 'Viewer',
};
2017-08-15 10:52:52 -05:00
2017-11-30 09:35:27 -06:00
this.navModel = navModelSrv.getNav('cfg', 'users', 0);
2017-03-20 05:18:29 -05:00
2016-02-13 19:55:49 -06:00
this.get();
this.editor = { index: 0 };
2017-07-31 07:39:33 -05:00
this.externalUserMngLinkUrl = config.externalUserMngLinkUrl;
this.externalUserMngLinkName = config.externalUserMngLinkName;
// render external user management info markdown
if (config.externalUserMngInfo) {
this.externalUserMngInfo = new Remarkable({
linkTarget: '__blank',
}).render(config.externalUserMngInfo);
}
this.addUsersBtnName = this.getAddUserBtnName();
}
getAddUserBtnName(): string {
if (this.externalUserMngLinkName) {
return this.externalUserMngLinkName;
}
2017-12-13 04:21:33 -06:00
return "Invite User";
2016-02-13 19:55:49 -06:00
}
get() {
this.backendSrv.get('/api/org/users')
.then((users) => {
this.users = users;
});
this.backendSrv.get('/api/org/invites')
.then((pendingInvites) => {
this.pendingInvites = pendingInvites;
});
}
updateOrgUser(user) {
this.backendSrv.patch('/api/org/users/' + user.userId, user);
}
removeUser(user) {
this.$scope.appEvent('confirm-modal', {
title: 'Delete',
text: 'Are you sure you want to delete user ' + user.login + '?',
yesText: "Delete",
icon: "fa-warning",
onConfirm: () => {
this.removeUserConfirmed(user);
}
});
}
removeUserConfirmed(user) {
2016-02-13 19:55:49 -06:00
this.backendSrv.delete('/api/org/users/' + user.userId)
2017-03-20 05:18:29 -05:00
.then(this.get.bind(this));
2016-02-13 19:55:49 -06:00
}
revokeInvite(invite, evt) {
evt.stopPropagation();
this.backendSrv.patch('/api/org/invites/' + invite.code + '/revoke')
2017-03-20 05:18:29 -05:00
.then(this.get.bind(this));
2016-02-13 19:55:49 -06:00
}
copyInviteToClipboard(evt) {
evt.stopPropagation();
}
getInviteUrl(invite) {
return invite.url;
}
openAddUsersView() {
var modalScope = this.$scope.$new();
modalScope.invitesSent = this.get.bind(this);
var src = config.disableLoginForm
? 'public/app/features/org/partials/add_user.html'
: 'public/app/features/org/partials/invite.html';
this.$scope.appEvent('show-modal', {
src: src,
modalClass: 'invite-modal',
scope: modalScope
});
}
2016-02-13 19:55:49 -06:00
}
coreModule.controller('OrgUsersCtrl', OrgUsersCtrl);