@@ -11,13 +11,14 @@ import { registerUser, signIn, signOut } from "../api/auth";
11
11
import { useLocalStorage } from "./useLocalStorage" ;
12
12
import { useNavigate } from "react-router-dom" ;
13
13
import { AxiosError } from "axios" ;
14
- import { createUser , getUser , UserModel } from "../api/user" ;
14
+ import { createAdminUser , createUser , getUser , UserModel } from "../api/user" ;
15
15
16
16
interface AuthContextData {
17
17
user : UserModel | undefined ;
18
18
setUser : any | undefined ,
19
19
error : string ;
20
20
signUp : ( email : string , password : string ) => void ;
21
+ signUpAdmin : ( email : string , password : string ) => void ;
21
22
login : ( email : string , password : string ) => void ;
22
23
logout : ( ) => void ;
23
24
}
@@ -31,6 +32,7 @@ const AuthContext = createContext<AuthContextData>({
31
32
setUser : undefined ,
32
33
error : "" ,
33
34
signUp : ( email : string , password : string ) => undefined ,
35
+ signUpAdmin : ( email : string , password : string ) => undefined ,
34
36
login : ( email : string , password : string ) => undefined ,
35
37
logout : ( ) => undefined ,
36
38
} ) ;
@@ -64,6 +66,33 @@ export function AuthContextProvider({ children }: AuthContextProviderProps) {
64
66
[ setUser ]
65
67
) ;
66
68
69
+ const signUpAdmin = useCallback (
70
+ async ( email : string , password : string ) => {
71
+ try {
72
+ const response = await registerUser ( {
73
+ email : email ,
74
+ password : password ,
75
+ } ) ;
76
+ const u : User = response . data . user ;
77
+ if ( ! u . email ) {
78
+ throw new Error ( "user returned without email" ) ;
79
+ }
80
+ console . log ( 'creating admin' )
81
+ const fetchedUser = await createAdminUser ( u . email ) ;
82
+ console . log ( 'admin created' )
83
+ // setActiveUser(u)
84
+ // setUser(fetchedUser.data);
85
+ } catch ( e ) {
86
+ if ( e instanceof AxiosError && e . response ) {
87
+ setError ( e . response . data . code ) ;
88
+ } else if ( e instanceof Error ) {
89
+ setError ( e . message ) ;
90
+ }
91
+ }
92
+ } ,
93
+ [ setUser ]
94
+ ) ;
95
+
67
96
const login = useCallback (
68
97
async ( email : string , password : string ) => {
69
98
try {
@@ -103,8 +132,8 @@ export function AuthContextProvider({ children }: AuthContextProviderProps) {
103
132
} , [ setUser , navigate ] ) ;
104
133
105
134
const authContextProviderValue = useMemo (
106
- ( ) => ( { user, setUser, error, signUp, login, logout } ) ,
107
- [ user , setUser , error , signUp , login , logout ]
135
+ ( ) => ( { user, setUser, error, signUp, signUpAdmin , login, logout } ) ,
136
+ [ user , setUser , error , signUp , signUpAdmin , login , logout ]
108
137
) ;
109
138
110
139
return (
0 commit comments