org_users_ctrl.ts 2.8 KB

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