AdminEditUserCtrl.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import _ from 'lodash';
  2. import { BackendSrv } from 'app/core/services/backend_srv';
  3. import { NavModelSrv } from 'app/core/core';
  4. import { User } from 'app/core/services/context_srv';
  5. export default class AdminEditUserCtrl {
  6. /** @ngInject */
  7. constructor($scope: any, $routeParams: any, backendSrv: BackendSrv, $location: any, navModelSrv: NavModelSrv) {
  8. $scope.user = {};
  9. $scope.newOrg = { name: '', role: 'Editor' };
  10. $scope.permissions = {};
  11. $scope.navModel = navModelSrv.getNav('admin', 'global-users');
  12. $scope.init = () => {
  13. if ($routeParams.id) {
  14. $scope.getUser($routeParams.id);
  15. $scope.getUserOrgs($routeParams.id);
  16. }
  17. };
  18. $scope.getUser = (id: number) => {
  19. backendSrv.get('/api/users/' + id).then((user: User) => {
  20. $scope.user = user;
  21. $scope.user_id = id;
  22. $scope.permissions.isGrafanaAdmin = user.isGrafanaAdmin;
  23. });
  24. };
  25. $scope.setPassword = () => {
  26. if (!$scope.passwordForm.$valid) {
  27. return;
  28. }
  29. const payload = { password: $scope.password };
  30. backendSrv.put('/api/admin/users/' + $scope.user_id + '/password', payload).then(() => {
  31. $location.path('/admin/users');
  32. });
  33. };
  34. $scope.updatePermissions = () => {
  35. const payload = $scope.permissions;
  36. backendSrv.put('/api/admin/users/' + $scope.user_id + '/permissions', payload).then(() => {
  37. $location.path('/admin/users');
  38. });
  39. };
  40. $scope.create = () => {
  41. if (!$scope.userForm.$valid) {
  42. return;
  43. }
  44. backendSrv.post('/api/admin/users', $scope.user).then(() => {
  45. $location.path('/admin/users');
  46. });
  47. };
  48. $scope.getUserOrgs = (id: number) => {
  49. backendSrv.get('/api/users/' + id + '/orgs').then((orgs: any) => {
  50. $scope.orgs = orgs;
  51. });
  52. };
  53. $scope.update = () => {
  54. if (!$scope.userForm.$valid) {
  55. return;
  56. }
  57. backendSrv.put('/api/users/' + $scope.user_id, $scope.user).then(() => {
  58. $location.path('/admin/users');
  59. });
  60. };
  61. $scope.updateOrgUser = (orgUser: { orgId: string }) => {
  62. backendSrv.patch('/api/orgs/' + orgUser.orgId + '/users/' + $scope.user_id, orgUser).then(() => {});
  63. };
  64. $scope.removeOrgUser = (orgUser: { orgId: string }) => {
  65. backendSrv.delete('/api/orgs/' + orgUser.orgId + '/users/' + $scope.user_id).then(() => {
  66. $scope.getUser($scope.user_id);
  67. $scope.getUserOrgs($scope.user_id);
  68. });
  69. };
  70. $scope.orgsSearchCache = [];
  71. $scope.searchOrgs = (queryStr: any, callback: any) => {
  72. if ($scope.orgsSearchCache.length > 0) {
  73. callback(_.map($scope.orgsSearchCache, 'name'));
  74. return;
  75. }
  76. backendSrv.get('/api/orgs', { query: '' }).then((result: any) => {
  77. $scope.orgsSearchCache = result;
  78. callback(_.map(result, 'name'));
  79. });
  80. };
  81. $scope.addOrgUser = () => {
  82. if (!$scope.addOrgForm.$valid) {
  83. return;
  84. }
  85. const orgInfo: any = _.find($scope.orgsSearchCache, {
  86. name: $scope.newOrg.name,
  87. });
  88. if (!orgInfo) {
  89. return;
  90. }
  91. $scope.newOrg.loginOrEmail = $scope.user.login;
  92. backendSrv.post('/api/orgs/' + orgInfo.id + '/users/', $scope.newOrg).then(() => {
  93. $scope.getUser($scope.user_id);
  94. $scope.getUserOrgs($scope.user_id);
  95. });
  96. };
  97. $scope.init();
  98. }
  99. }