import config from 'app/core/config'; import coreModule from 'app/core/core_module'; import Remarkable from 'remarkable'; import _ from 'lodash'; export class OrgUsersCtrl { unfiltered: any; users: any; pendingInvites: any; editor: any; navModel: any; externalUserMngLinkUrl: string; externalUserMngLinkName: string; externalUserMngInfo: string; canInvite: boolean; searchQuery: string; showInvites: boolean; /** @ngInject */ constructor(private $scope, private backendSrv, navModelSrv, $sce) { this.navModel = navModelSrv.getNav('cfg', 'users', 0); this.get(); this.externalUserMngLinkUrl = config.externalUserMngLinkUrl; this.externalUserMngLinkName = config.externalUserMngLinkName; this.canInvite = !config.disableLoginForm && !config.externalUserMngLinkName; // render external user management info markdown if (config.externalUserMngInfo) { this.externalUserMngInfo = new Remarkable({ linkTarget: '__blank', }).render(config.externalUserMngInfo); } } get() { this.backendSrv.get('/api/org/users').then(users => { this.users = users; this.unfiltered = users; }); this.backendSrv.get('/api/org/invites').then(pendingInvites => { this.pendingInvites = pendingInvites; }); } onQueryUpdated() { let regex = new RegExp(this.searchQuery, 'ig'); this.users = _.filter(this.unfiltered, item => { return regex.test(item.email) || regex.test(item.login); }); } 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) { this.backendSrv.delete('/api/org/users/' + user.userId).then(this.get.bind(this)); } revokeInvite(invite, evt) { evt.stopPropagation(); this.backendSrv.patch('/api/org/invites/' + invite.code + '/revoke').then(this.get.bind(this)); } copyInviteToClipboard(evt) { evt.stopPropagation(); } getInviteUrl(invite) { return invite.url; } } coreModule.controller('OrgUsersCtrl', OrgUsersCtrl);