apis.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { getBackendSrv } from '@grafana/runtime';
  2. import { dateTime } from '@grafana/data';
  3. import { LdapUser, LdapConnectionInfo, UserSession, SyncInfo, User } from 'app/types';
  4. export interface ServerStat {
  5. name: string;
  6. value: number;
  7. }
  8. export const getServerStats = async (): Promise<ServerStat[]> => {
  9. try {
  10. const res = await getBackendSrv().get('api/admin/stats');
  11. return [
  12. { name: 'Total users', value: res.users },
  13. { name: 'Total admins', value: res.admins },
  14. { name: 'Total editors', value: res.editors },
  15. { name: 'Total viewers', value: res.viewers },
  16. { name: 'Active users (seen last 30 days)', value: res.activeUsers },
  17. { name: 'Active admins (seen last 30 days)', value: res.activeAdmins },
  18. { name: 'Active editors (seen last 30 days)', value: res.activeEditors },
  19. { name: 'Active viewers (seen last 30 days)', value: res.activeViewers },
  20. { name: 'Active sessions', value: res.activeSessions },
  21. { name: 'Total dashboards', value: res.dashboards },
  22. { name: 'Total orgs', value: res.orgs },
  23. { name: 'Total playlists', value: res.playlists },
  24. { name: 'Total snapshots', value: res.snapshots },
  25. { name: 'Total dashboard tags', value: res.tags },
  26. { name: 'Total starred dashboards', value: res.stars },
  27. { name: 'Total alerts', value: res.alerts },
  28. ];
  29. } catch (error) {
  30. console.error(error);
  31. throw error;
  32. }
  33. };
  34. export const getLdapState = async (): Promise<LdapConnectionInfo> => {
  35. return await getBackendSrv().get(`/api/admin/ldap/status`);
  36. };
  37. export const getLdapSyncStatus = async (): Promise<SyncInfo> => {
  38. return await getBackendSrv().get(`/api/admin/ldap-sync-status`);
  39. };
  40. export const syncLdapUser = async (userId: number) => {
  41. return await getBackendSrv().post(`/api/admin/ldap/sync/${userId}`);
  42. };
  43. export const getUserInfo = async (username: string): Promise<LdapUser> => {
  44. try {
  45. const response = await getBackendSrv().get(`/api/admin/ldap/${username}`);
  46. const { name, surname, email, login, isGrafanaAdmin, isDisabled, roles, teams } = response;
  47. return {
  48. info: { name, surname, email, login },
  49. permissions: { isGrafanaAdmin, isDisabled },
  50. roles,
  51. teams,
  52. };
  53. } catch (error) {
  54. throw error;
  55. }
  56. };
  57. export const getUser = async (id: number): Promise<User> => {
  58. return await getBackendSrv().get('/api/users/' + id);
  59. };
  60. export const getUserSessions = async (id: number) => {
  61. const sessions = await getBackendSrv().get('/api/admin/users/' + id + '/auth-tokens');
  62. sessions.reverse();
  63. return sessions.map((session: UserSession) => {
  64. return {
  65. id: session.id,
  66. isActive: session.isActive,
  67. seenAt: dateTime(session.seenAt).fromNow(),
  68. createdAt: dateTime(session.createdAt).format('MMMM DD, YYYY'),
  69. clientIp: session.clientIp,
  70. browser: session.browser,
  71. browserVersion: session.browserVersion,
  72. os: session.os,
  73. osVersion: session.osVersion,
  74. device: session.device,
  75. };
  76. });
  77. };
  78. export const revokeUserSession = async (tokenId: number, userId: number) => {
  79. return await getBackendSrv().post(`/api/admin/users/${userId}/revoke-auth-token`, {
  80. authTokenId: tokenId,
  81. });
  82. };
  83. export const revokeAllUserSessions = async (userId: number) => {
  84. return await getBackendSrv().post(`/api/admin/users/${userId}/logout`);
  85. };