RoleSelector.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import { RadioGroupStacked, RadioGroupStackedItem } from 'ui'
  2. import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
  3. import { useRoleImpersonationStateSnapshot } from '@/state/role-impersonation-state'
  4. interface RoleSelectorProps {
  5. onSelectRole: (value: 'anon' | 'authenticated') => void
  6. }
  7. export const RoleSelector = ({ onSelectRole }: RoleSelectorProps) => {
  8. const { role, setRole } = useRoleImpersonationStateSnapshot()
  9. return (
  10. <FormItemLayout isReactForm={false} label="Test as">
  11. <RadioGroupStacked defaultValue={role?.role ?? 'anon'}>
  12. <RadioGroupStackedItem
  13. value="anon"
  14. id="anon"
  15. label="Anonymous user"
  16. description="Not logged in"
  17. onClick={() => {
  18. onSelectRole('anon')
  19. setRole({ type: 'postgrest', role: 'anon' })
  20. }}
  21. />
  22. <RadioGroupStackedItem
  23. value="authenticated"
  24. id="authenticated"
  25. label="Authenticated user"
  26. description="A specific logged in user"
  27. onClick={() => {
  28. onSelectRole('authenticated')
  29. }}
  30. />
  31. </RadioGroupStacked>
  32. </FormItemLayout>
  33. )
  34. }