|
@@ -1,10 +1,10 @@
|
|
|
import config from 'app/core/config';
|
|
import config from 'app/core/config';
|
|
|
import coreModule from 'app/core/core_module';
|
|
import coreModule from 'app/core/core_module';
|
|
|
import Remarkable from 'remarkable';
|
|
import Remarkable from 'remarkable';
|
|
|
|
|
+import _ from 'lodash';
|
|
|
|
|
|
|
|
export class OrgUsersCtrl {
|
|
export class OrgUsersCtrl {
|
|
|
-
|
|
|
|
|
- user: any;
|
|
|
|
|
|
|
+ unfiltered: any;
|
|
|
users: any;
|
|
users: any;
|
|
|
pendingInvites: any;
|
|
pendingInvites: any;
|
|
|
editor: any;
|
|
editor: any;
|
|
@@ -12,21 +12,18 @@ export class OrgUsersCtrl {
|
|
|
externalUserMngLinkUrl: string;
|
|
externalUserMngLinkUrl: string;
|
|
|
externalUserMngLinkName: string;
|
|
externalUserMngLinkName: string;
|
|
|
externalUserMngInfo: string;
|
|
externalUserMngInfo: string;
|
|
|
- addUsersBtnName: string;
|
|
|
|
|
|
|
+ canInvite: boolean;
|
|
|
|
|
+ searchQuery: string;
|
|
|
|
|
+ showInvites: boolean;
|
|
|
|
|
|
|
|
/** @ngInject */
|
|
/** @ngInject */
|
|
|
constructor(private $scope, private backendSrv, navModelSrv, $sce) {
|
|
constructor(private $scope, private backendSrv, navModelSrv, $sce) {
|
|
|
- this.user = {
|
|
|
|
|
- loginOrEmail: '',
|
|
|
|
|
- role: 'Viewer',
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
this.navModel = navModelSrv.getNav('cfg', 'users', 0);
|
|
this.navModel = navModelSrv.getNav('cfg', 'users', 0);
|
|
|
|
|
|
|
|
this.get();
|
|
this.get();
|
|
|
- this.editor = { index: 0 };
|
|
|
|
|
this.externalUserMngLinkUrl = config.externalUserMngLinkUrl;
|
|
this.externalUserMngLinkUrl = config.externalUserMngLinkUrl;
|
|
|
this.externalUserMngLinkName = config.externalUserMngLinkName;
|
|
this.externalUserMngLinkName = config.externalUserMngLinkName;
|
|
|
|
|
+ this.canInvite = !config.disableLoginForm && !config.externalUserMngLinkName;
|
|
|
|
|
|
|
|
// render external user management info markdown
|
|
// render external user management info markdown
|
|
|
if (config.externalUserMngInfo) {
|
|
if (config.externalUserMngInfo) {
|
|
@@ -34,21 +31,13 @@ export class OrgUsersCtrl {
|
|
|
linkTarget: '__blank',
|
|
linkTarget: '__blank',
|
|
|
}).render(config.externalUserMngInfo);
|
|
}).render(config.externalUserMngInfo);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- this.addUsersBtnName = this.getAddUserBtnName();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- getAddUserBtnName(): string {
|
|
|
|
|
- if (this.externalUserMngLinkName) {
|
|
|
|
|
- return this.externalUserMngLinkName;
|
|
|
|
|
- }
|
|
|
|
|
- return "Invite User";
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
get() {
|
|
get() {
|
|
|
this.backendSrv.get('/api/org/users')
|
|
this.backendSrv.get('/api/org/users')
|
|
|
.then((users) => {
|
|
.then((users) => {
|
|
|
this.users = users;
|
|
this.users = users;
|
|
|
|
|
+ this.unfiltered = users;
|
|
|
});
|
|
});
|
|
|
this.backendSrv.get('/api/org/invites')
|
|
this.backendSrv.get('/api/org/invites')
|
|
|
.then((pendingInvites) => {
|
|
.then((pendingInvites) => {
|
|
@@ -56,6 +45,13 @@ export class OrgUsersCtrl {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ 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) {
|
|
updateOrgUser(user) {
|
|
|
this.backendSrv.patch('/api/org/users/' + user.userId, user);
|
|
this.backendSrv.patch('/api/org/users/' + user.userId, user);
|
|
|
}
|
|
}
|
|
@@ -74,38 +70,22 @@ export class OrgUsersCtrl {
|
|
|
|
|
|
|
|
removeUserConfirmed(user) {
|
|
removeUserConfirmed(user) {
|
|
|
this.backendSrv.delete('/api/org/users/' + user.userId)
|
|
this.backendSrv.delete('/api/org/users/' + user.userId)
|
|
|
- .then(this.get.bind(this));
|
|
|
|
|
|
|
+ .then(this.get.bind(this));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
revokeInvite(invite, evt) {
|
|
revokeInvite(invite, evt) {
|
|
|
evt.stopPropagation();
|
|
evt.stopPropagation();
|
|
|
this.backendSrv.patch('/api/org/invites/' + invite.code + '/revoke')
|
|
this.backendSrv.patch('/api/org/invites/' + invite.code + '/revoke')
|
|
|
- .then(this.get.bind(this));
|
|
|
|
|
|
|
+ .then(this.get.bind(this));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
copyInviteToClipboard(evt) {
|
|
copyInviteToClipboard(evt) {
|
|
|
evt.stopPropagation();
|
|
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
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
+ getInviteUrl(invite) {
|
|
|
|
|
+ return invite.url;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
coreModule.controller('OrgUsersCtrl', OrgUsersCtrl);
|
|
coreModule.controller('OrgUsersCtrl', OrgUsersCtrl);
|