Permissions.tsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import React, { Component } from 'react';
  2. import PermissionsList from './PermissionsList';
  3. import { observer } from 'mobx-react';
  4. import { FolderInfo } from './FolderInfo';
  5. export interface DashboardAcl {
  6. id?: number;
  7. dashboardId?: number;
  8. userId?: number;
  9. userLogin?: string;
  10. userEmail?: string;
  11. teamId?: number;
  12. team?: string;
  13. permission?: number;
  14. permissionName?: string;
  15. role?: string;
  16. icon?: string;
  17. name?: string;
  18. inherited?: boolean;
  19. sortRank?: number;
  20. }
  21. export interface IProps {
  22. dashboardId: number;
  23. folderInfo?: FolderInfo;
  24. permissions?: any;
  25. isFolder: boolean;
  26. backendSrv: any;
  27. }
  28. @observer
  29. class Permissions extends Component<IProps, any> {
  30. constructor(props) {
  31. super(props);
  32. const { dashboardId, isFolder, folderInfo } = this.props;
  33. this.permissionChanged = this.permissionChanged.bind(this);
  34. this.typeChanged = this.typeChanged.bind(this);
  35. this.removeItem = this.removeItem.bind(this);
  36. this.loadStore(dashboardId, isFolder, folderInfo && folderInfo.id === 0);
  37. }
  38. loadStore(dashboardId, isFolder, isInRoot = false) {
  39. return this.props.permissions.load(dashboardId, isFolder, isInRoot);
  40. }
  41. permissionChanged(index: number, permission: number, permissionName: string) {
  42. const { permissions } = this.props;
  43. permissions.updatePermissionOnIndex(index, permission, permissionName);
  44. }
  45. removeItem(index: number) {
  46. const { permissions } = this.props;
  47. permissions.removeStoreItem(index);
  48. }
  49. resetNewType() {
  50. const { permissions } = this.props;
  51. permissions.resetNewType();
  52. }
  53. typeChanged(evt) {
  54. const { value } = evt.target;
  55. const { permissions, dashboardId } = this.props;
  56. if (value === 'Viewer' || value === 'Editor') {
  57. permissions.addStoreItem({ permission: 1, role: value, dashboardId: dashboardId }, dashboardId);
  58. this.resetNewType();
  59. return;
  60. }
  61. permissions.setNewType(value);
  62. }
  63. render() {
  64. const { permissions, folderInfo } = this.props;
  65. return (
  66. <div className="gf-form-group">
  67. <PermissionsList
  68. permissions={permissions.items}
  69. removeItem={this.removeItem}
  70. permissionChanged={this.permissionChanged}
  71. fetching={permissions.fetching}
  72. folderInfo={folderInfo}
  73. />
  74. </div>
  75. );
  76. }
  77. }
  78. export default Permissions;