Permissions.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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. nameHtml?: string;
  18. inherited?: boolean;
  19. sortName?: string;
  20. sortRank?: number;
  21. }
  22. export interface IProps {
  23. dashboardId: number;
  24. folderInfo?: FolderInfo;
  25. permissions?: any;
  26. isFolder: boolean;
  27. backendSrv: any;
  28. }
  29. @observer
  30. class Permissions extends Component<IProps, any> {
  31. constructor(props) {
  32. super(props);
  33. const { dashboardId, isFolder, folderInfo } = this.props;
  34. this.permissionChanged = this.permissionChanged.bind(this);
  35. this.typeChanged = this.typeChanged.bind(this);
  36. this.removeItem = this.removeItem.bind(this);
  37. this.loadStore(dashboardId, isFolder, folderInfo && folderInfo.id === 0);
  38. }
  39. loadStore(dashboardId, isFolder, isInRoot = false) {
  40. return this.props.permissions.load(dashboardId, isFolder, isInRoot);
  41. }
  42. permissionChanged(index: number, permission: number, permissionName: string) {
  43. const { permissions } = this.props;
  44. permissions.updatePermissionOnIndex(index, permission, permissionName);
  45. }
  46. removeItem(index: number) {
  47. const { permissions } = this.props;
  48. permissions.removeStoreItem(index);
  49. }
  50. resetNewType() {
  51. const { permissions } = this.props;
  52. permissions.resetNewType();
  53. }
  54. typeChanged(evt) {
  55. const { value } = evt.target;
  56. const { permissions, dashboardId } = this.props;
  57. if (value === 'Viewer' || value === 'Editor') {
  58. permissions.addStoreItem({ permission: 1, role: value, dashboardId: dashboardId }, dashboardId);
  59. this.resetNewType();
  60. return;
  61. }
  62. permissions.setNewType(value);
  63. }
  64. render() {
  65. const { permissions, folderInfo } = this.props;
  66. return (
  67. <div className="gf-form-group">
  68. <PermissionsList
  69. permissions={permissions.items}
  70. removeItem={this.removeItem}
  71. permissionChanged={this.permissionChanged}
  72. fetching={permissions.fetching}
  73. folderInfo={folderInfo}
  74. />
  75. </div>
  76. );
  77. }
  78. }
  79. export default Permissions;