AdminListUsersCtrl.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { BackendSrv } from 'app/core/services/backend_srv';
  2. import { NavModelSrv } from 'app/core/core';
  3. import tags from 'app/core/utils/tags';
  4. export default class AdminListUsersCtrl {
  5. users: any;
  6. pages: any[] = [];
  7. perPage = 50;
  8. page = 1;
  9. totalPages: number;
  10. showPaging = false;
  11. query: any;
  12. navModel: any;
  13. /** @ngInject */
  14. constructor(private backendSrv: BackendSrv, navModelSrv: NavModelSrv) {
  15. this.navModel = navModelSrv.getNav('admin', 'global-users', 0);
  16. this.query = '';
  17. this.getUsers();
  18. }
  19. getUsers() {
  20. this.backendSrv
  21. .get(`/api/users/search?perpage=${this.perPage}&page=${this.page}&query=${this.query}`)
  22. .then((result: any) => {
  23. this.users = result.users;
  24. this.page = result.page;
  25. this.perPage = result.perPage;
  26. this.totalPages = Math.ceil(result.totalCount / result.perPage);
  27. this.showPaging = this.totalPages > 1;
  28. this.pages = [];
  29. for (let i = 1; i < this.totalPages + 1; i++) {
  30. this.pages.push({ page: i, current: i === this.page });
  31. }
  32. this.addUsersAuthLabels();
  33. });
  34. }
  35. navigateToPage(page: any) {
  36. this.page = page.page;
  37. this.getUsers();
  38. }
  39. addUsersAuthLabels() {
  40. for (const user of this.users) {
  41. user.authLabel = getAuthLabel(user);
  42. user.authLabelStyle = getAuthLabelStyle(user.authLabel);
  43. }
  44. }
  45. }
  46. function getAuthLabel(user: any) {
  47. if (user.authLabels && user.authLabels.length) {
  48. return user.authLabels[0];
  49. }
  50. return '';
  51. }
  52. function getAuthLabelStyle(label: string) {
  53. if (label === 'LDAP' || !label) {
  54. return {};
  55. }
  56. const { color, borderColor } = tags.getTagColorsFromName(label);
  57. return {
  58. 'background-color': color,
  59. 'border-color': borderColor,
  60. };
  61. }