Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@
**/.DS_Store
**/*.cache
**/*.egg-info
**/test.db
**/test.db
.cursor/
204 changes: 197 additions & 7 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,26 @@
},
"dependencies": {
"@chakra-ui/react": "^3.13.0",
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/modifiers": "^9.0.0",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"axios": "^1.11.0",
"firebase": "^11.10.0",
"humps": "^2.0.1",
"jwt-decode": "^4.0.0",
"next": "^14.2.24",
"next-themes": "^0.4.6",
"react": "^18",
"react-datepicker": "^8.7.0",
"react-dom": "^18",
"react-hook-form": "^7.57.0",
"react-icons": "^5.5.0"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-datepicker": "^6.2.0",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.13",
Expand Down
Binary file added frontend/public/llsc-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 33 additions & 0 deletions frontend/src/APIClients/authAPIClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -386,3 +386,36 @@ export const refresh = async (): Promise<boolean> => {
return false;
}
};

// User types for admin and user management
export interface UserResponse {
id: string;
firstName: string | null;
lastName: string | null;
email: string;
roleId: number;
authId: string;
approved: boolean;
formStatus: string;
}

export interface UserListResponse {
users: UserResponse[];
total: number;
}

/**
* Get all admin users
*/
export const getAdmins = async (): Promise<UserListResponse> => {
const response = await baseAPIClient.get<UserListResponse>('/users?admin=true');
return response.data;
};

/**
* Get user by ID
*/
export const getUserById = async (userId: string): Promise<UserResponse> => {
const response = await baseAPIClient.get<UserResponse>(`/users/${userId}`);
return response.data;
};
Loading
Loading