org_users_ctrl.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. ///<reference path="../../headers/common.d.ts" />
  2. import config from 'app/core/config';
  3. import coreModule from 'app/core/core_module';
  4. import Remarkable from 'remarkable';
  5. export class OrgUsersCtrl {
  6. user: any;
  7. users: any;
  8. pendingInvites: any;
  9. editor: any;
  10. navModel: any;
  11. externalUserMngLinkUrl: string;
  12. externalUserMngLinkName: string;
  13. externalUserMngInfo: string;
  14. addUsersBtnName: string;
  15. /** @ngInject */
  16. constructor(private $scope, private backendSrv, navModelSrv, $sce) {
  17. this.user = {
  18. loginOrEmail: '',
  19. role: 'Viewer',
  20. };
  21. this.navModel = navModelSrv.getOrgNav(0);
  22. this.get();
  23. this.editor = { index: 0 };
  24. this.externalUserMngLinkUrl = config.externalUserMngLinkUrl;
  25. this.externalUserMngLinkName = config.externalUserMngLinkName;
  26. // render external user management info markdown
  27. if (config.externalUserMngInfo) {
  28. this.externalUserMngInfo = new Remarkable({
  29. linkTarget: '__blank',
  30. }).render(config.externalUserMngInfo);
  31. }
  32. this.addUsersBtnName = this.getAddUserBtnName();
  33. }
  34. getAddUserBtnName(): string {
  35. if (this.externalUserMngLinkName) {
  36. return this.externalUserMngLinkName;
  37. } else if (config.disableLoginForm) {
  38. return "Add Users";
  39. } else {
  40. return "Add or Invite";
  41. }
  42. }
  43. get() {
  44. this.backendSrv.get('/api/org/users')
  45. .then((users) => {
  46. this.users = users;
  47. });
  48. this.backendSrv.get('/api/org/invites')
  49. .then((pendingInvites) => {
  50. this.pendingInvites = pendingInvites;
  51. });
  52. }
  53. updateOrgUser(user) {
  54. this.backendSrv.patch('/api/org/users/' + user.userId, user);
  55. }
  56. removeUser(user) {
  57. this.$scope.appEvent('confirm-modal', {
  58. title: 'Delete',
  59. text: 'Are you sure you want to delete user ' + user.login + '?',
  60. yesText: "Delete",
  61. icon: "fa-warning",
  62. onConfirm: () => {
  63. this.removeUserConfirmed(user);
  64. }
  65. });
  66. }
  67. removeUserConfirmed(user) {
  68. this.backendSrv.delete('/api/org/users/' + user.userId)
  69. .then(this.get.bind(this));
  70. }
  71. revokeInvite(invite, evt) {
  72. evt.stopPropagation();
  73. this.backendSrv.patch('/api/org/invites/' + invite.code + '/revoke')
  74. .then(this.get.bind(this));
  75. }
  76. copyInviteToClipboard(evt) {
  77. evt.stopPropagation();
  78. }
  79. getInviteUrl(invite) {
  80. return invite.url;
  81. }
  82. openAddUsersView() {
  83. var modalScope = this.$scope.$new();
  84. modalScope.invitesSent = this.get.bind(this);
  85. var src = config.disableLoginForm
  86. ? 'public/app/features/org/partials/add_user.html'
  87. : 'public/app/features/org/partials/invite.html';
  88. this.$scope.appEvent('show-modal', {
  89. src: src,
  90. modalClass: 'invite-modal',
  91. scope: modalScope
  92. });
  93. }
  94. }
  95. coreModule.controller('OrgUsersCtrl', OrgUsersCtrl);