1- import React , { useState } from 'react'
1+ import React , { useEffect , useMemo , useState } from 'react'
22import { Navigate } from 'react-router-dom'
33import { useAuth } from '../../contexts/AuthContext'
44import { usePlatformRoles } from '../../hooks/usePlatformRoles'
@@ -54,7 +54,7 @@ const PlatformAdmin = () => {
5454 const [ inviteForm , setInviteForm ] = useState ( {
5555 agency_id : '' ,
5656 email : '' ,
57- role : 'owner ' as AgencyRole ,
57+ role : 'reviewer ' as AgencyRole ,
5858 full_name : ''
5959 } )
6060
@@ -64,6 +64,20 @@ const PlatformAdmin = () => {
6464 full_name : ''
6565 } )
6666
67+ const assignableAgencyRoles = useMemo ( ( ) => {
68+ return Object . entries ( AGENCY_ROLES )
69+ . map ( ( [ role , info ] ) => ( { role : role as AgencyRole , info } ) )
70+ . filter ( ( { role } ) => ! ( platformRole === 'super_user' && role === 'owner' ) )
71+ } , [ platformRole ] )
72+
73+ useEffect ( ( ) => {
74+ const defaultRole = assignableAgencyRoles [ 0 ] ?. role || 'reviewer'
75+ setInviteForm ( ( prev ) => ( {
76+ ...prev ,
77+ role : assignableAgencyRoles . some ( ( entry ) => entry . role === prev . role ) ? prev . role : defaultRole ,
78+ } ) )
79+ } , [ assignableAgencyRoles ] )
80+
6781 // Redirect if not authenticated or no platform role
6882 if ( ! user || ! platformRole ) {
6983 return < Navigate to = "/login" replace />
@@ -111,13 +125,17 @@ const PlatformAdmin = () => {
111125 setSuccessMessage ( '' )
112126
113127 try {
128+ if ( platformRole === 'super_user' && inviteForm . role === 'owner' ) {
129+ throw new Error ( 'Super users cannot assign owner role' )
130+ }
131+
114132 await inviteUserToAgency ( inviteForm )
115133
116134 setSuccessMessage ( `User "${ inviteForm . email } " invited successfully as ${ AGENCY_ROLES [ inviteForm . role ] . name } ` )
117135 setInviteForm ( {
118136 agency_id : '' ,
119137 email : '' ,
120- role : 'owner ',
138+ role : assignableAgencyRoles [ 0 ] ?. role || 'reviewer ',
121139 full_name : ''
122140 } )
123141 } catch ( err : any ) {
@@ -448,7 +466,7 @@ const PlatformAdmin = () => {
448466 className = "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent"
449467 required
450468 >
451- { Object . entries ( AGENCY_ROLES ) . map ( ( [ role , info ] ) => (
469+ { assignableAgencyRoles . map ( ( { role, info } ) => (
452470 < option key = { role } value = { role } >
453471 { info . name } - { info . description }
454472 </ option >
0 commit comments