@@ -40,6 +40,7 @@ interface ProjectMemberPageState {
4040 newUser : string ;
4141 members : MemberState [ ] ;
4242 permission : ProjectUpdatePermissionEnum ;
43+ changeRolePermissions : ProjectUpdatePermissionEnum [ ] ;
4344}
4445
4546interface RouteParams {
@@ -58,6 +59,11 @@ export class ProjectMemberPage extends Component<RouteComponentProps<RouteParams
5859 newUser : "" ,
5960 permission : ProjectUpdatePermissionEnum . Viewer ,
6061 members : [ ] ,
62+ changeRolePermissions : [
63+ ProjectUpdatePermissionEnum . Admin ,
64+ ProjectUpdatePermissionEnum . Developer ,
65+ ProjectUpdatePermissionEnum . Viewer ,
66+ ] ,
6167 } ;
6268 apiService = ApiService ( ) ;
6369 projectId : string = this . props . match . params . projectId ;
@@ -90,6 +96,23 @@ export class ProjectMemberPage extends Component<RouteComponentProps<RouteParams
9096 } ,
9197 ] ;
9298
99+ verifyIsSuperuser = ( ) : void => {
100+ const requestParams = { username : AuthService . getUserUsername ( ) || "" } ;
101+ this . apiService . apiAuthProfileRead ( requestParams ) . then (
102+ ( response ) => {
103+ this . setState ( {
104+ changeRolePermissions :
105+ response . isSuperuser === true
106+ ? [ ...this . state . changeRolePermissions , ProjectUpdatePermissionEnum . Owner ]
107+ : [ ...this . state . changeRolePermissions ] ,
108+ } ) ;
109+ } ,
110+ ( error : unknown ) => {
111+ error ;
112+ } ,
113+ ) ;
114+ } ;
115+
93116 updateInfo = ( ) : void => {
94117 const requestParams : ApiProjectsReadRequest = { pid : this . projectId } ;
95118 this . apiService . apiProjectsRead ( requestParams ) . then (
@@ -117,6 +140,7 @@ export class ProjectMemberPage extends Component<RouteComponentProps<RouteParams
117140 } ;
118141
119142 async componentDidMount ( ) : Promise < void > {
143+ this . verifyIsSuperuser ( ) ;
120144 this . updateInfo ( ) ;
121145 }
122146
@@ -324,27 +348,15 @@ export class ProjectMemberPage extends Component<RouteComponentProps<RouteParams
324348 defaultValue = { ProjectUpdatePermissionEnum . Viewer }
325349 onChange = { this . handleSelectChange }
326350 >
327- < Option
328- key = { 1 }
329- className = "hover:bg-button-hover hover:text-estela"
330- value = { ProjectUpdatePermissionEnum . Admin }
331- >
332- Admin
333- </ Option >
334- < Option
335- key = { 2 }
336- className = "hover:bg-button-hover hover:text-estela"
337- value = { ProjectUpdatePermissionEnum . Developer }
338- >
339- Developer
340- </ Option >
341- < Option
342- key = { 3 }
343- className = "hover:bg-button-hover hover:text-estela"
344- value = { ProjectUpdatePermissionEnum . Viewer }
345- >
346- Viewer
347- </ Option >
351+ { this . state . changeRolePermissions . map ( ( permission , index ) => (
352+ < Option
353+ key = { index }
354+ className = "hover:bg-button-hover hover:text-estela"
355+ value = { permission }
356+ >
357+ { permission [ 0 ] + permission . slice ( 1 ) . toLowerCase ( ) }
358+ </ Option >
359+ ) ) }
348360 </ Select >
349361 < Row className = "mt-6 w-full grid grid-cols-2" justify = "center" >
350362 < Button
0 commit comments