org_users_ctrl.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. import config from 'app/core/config';
  2. import coreModule from 'app/core/core_module';
  3. import Remarkable from 'remarkable';
  4. import _ from 'lodash';
  5. export class OrgUsersCtrl {
  6. unfiltered: any;
  7. users: any;
  8. pendingInvites: any;
  9. editor: any;
  10. navModel: any;
  11. externalUserMngLinkUrl: string;
  12. externalUserMngLinkName: string;
  13. externalUserMngInfo: string;
  14. canInvite: boolean;
  15. searchQuery: string;
  16. showInvites: boolean;
  17. /** @ngInject */
  18. constructor(private $scope, private backendSrv, navModelSrv, $sce) {
  19. this.navModel = navModelSrv.getNav('cfg', 'users', 0);
  20. this.get();
  21. this.externalUserMngLinkUrl = config.externalUserMngLinkUrl;
  22. this.externalUserMngLinkName = config.externalUserMngLinkName;
  23. this.canInvite =
  24. !config.disableLoginForm && !config.externalUserMngLinkName;
  25. // render external user management info markdown
  26. if (config.externalUserMngInfo) {
  27. this.externalUserMngInfo = new Remarkable({
  28. linkTarget: '__blank',
  29. }).render(config.externalUserMngInfo);
  30. }
  31. }
  32. get() {
  33. this.backendSrv.get('/api/org/users').then(users => {
  34. this.users = users;
  35. this.unfiltered = users;
  36. });
  37. this.backendSrv.get('/api/org/invites').then(pendingInvites => {
  38. this.pendingInvites = pendingInvites;
  39. });
  40. }
  41. onQueryUpdated() {
  42. let regex = new RegExp(this.searchQuery, 'ig');
  43. this.users = _.filter(this.unfiltered, item => {
  44. return regex.test(item.email) || regex.test(item.login);
  45. });
  46. }
  47. updateOrgUser(user) {
  48. this.backendSrv.patch('/api/org/users/' + user.userId, user);
  49. }
  50. removeUser(user) {
  51. this.$scope.appEvent('confirm-modal', {
  52. title: 'Delete',
  53. text: 'Are you sure you want to delete user ' + user.login + '?',
  54. yesText: 'Delete',
  55. icon: 'fa-warning',
  56. onConfirm: () => {
  57. this.removeUserConfirmed(user);
  58. },
  59. });
  60. }
  61. removeUserConfirmed(user) {
  62. this.backendSrv
  63. .delete('/api/org/users/' + user.userId)
  64. .then(this.get.bind(this));
  65. }
  66. revokeInvite(invite, evt) {
  67. evt.stopPropagation();
  68. this.backendSrv
  69. .patch('/api/org/invites/' + invite.code + '/revoke')
  70. .then(this.get.bind(this));
  71. }
  72. copyInviteToClipboard(evt) {
  73. evt.stopPropagation();
  74. }
  75. getInviteUrl(invite) {
  76. return invite.url;
  77. }
  78. }
  79. coreModule.controller('OrgUsersCtrl', OrgUsersCtrl);