mirror of
https://github.com/sasjs/server.git
synced 2025-12-10 11:24:35 +00:00
fix: add isAdmin attribute to return response of get session and login requests
This commit is contained in:
@@ -2,6 +2,10 @@ import express from 'express'
|
||||
import { Request, Security, Route, Tags, Example, Get } from 'tsoa'
|
||||
import { UserResponse } from './user'
|
||||
|
||||
interface SessionResponse extends UserResponse {
|
||||
isAdmin: boolean
|
||||
}
|
||||
|
||||
@Security('bearerAuth')
|
||||
@Route('SASjsApi/session')
|
||||
@Tags('Session')
|
||||
@@ -10,15 +14,16 @@ export class SessionController {
|
||||
* @summary Get session info (username).
|
||||
*
|
||||
*/
|
||||
@Example<UserResponse>({
|
||||
@Example<SessionResponse>({
|
||||
id: 123,
|
||||
username: 'johnusername',
|
||||
displayName: 'John'
|
||||
displayName: 'John',
|
||||
isAdmin: false
|
||||
})
|
||||
@Get('/')
|
||||
public async session(
|
||||
@Request() request: express.Request
|
||||
): Promise<UserResponse> {
|
||||
): Promise<SessionResponse> {
|
||||
return session(request)
|
||||
}
|
||||
}
|
||||
@@ -26,5 +31,6 @@ export class SessionController {
|
||||
const session = (req: express.Request) => ({
|
||||
id: req.user!.userId,
|
||||
username: req.user!.username,
|
||||
displayName: req.user!.displayName
|
||||
displayName: req.user!.displayName,
|
||||
isAdmin: req.user!.isAdmin
|
||||
})
|
||||
|
||||
@@ -99,7 +99,8 @@ const login = async (
|
||||
user: {
|
||||
id: user.id,
|
||||
username: user.username,
|
||||
displayName: user.displayName
|
||||
displayName: user.displayName,
|
||||
isAdmin: user.isAdmin
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,8 @@ describe('web', () => {
|
||||
expect(res.body.user).toEqual({
|
||||
id: expect.any(Number),
|
||||
username: user.username,
|
||||
displayName: user.displayName
|
||||
displayName: user.displayName,
|
||||
isAdmin: user.isAdmin
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -30,6 +30,7 @@ const Login = () => {
|
||||
appContext.setUserId?.(user.id)
|
||||
appContext.setUsername?.(user.username)
|
||||
appContext.setDisplayName?.(user.displayName)
|
||||
appContext.setIsAdmin?.(user.isAdmin)
|
||||
appContext.setLoggedIn?.(loggedIn)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,8 @@ interface AppContextProps {
|
||||
setUsername: Dispatch<SetStateAction<string>> | null
|
||||
displayName: string
|
||||
setDisplayName: Dispatch<SetStateAction<string>> | null
|
||||
isAdmin: boolean
|
||||
setIsAdmin: Dispatch<SetStateAction<boolean>> | null
|
||||
mode: ModeType
|
||||
runTimes: RunTimeType[]
|
||||
logout: (() => void) | null
|
||||
@@ -44,6 +46,8 @@ export const AppContext = createContext<AppContextProps>({
|
||||
setUsername: null,
|
||||
displayName: '',
|
||||
setDisplayName: null,
|
||||
isAdmin: false,
|
||||
setIsAdmin: null,
|
||||
mode: ModeType.Server,
|
||||
runTimes: [],
|
||||
logout: null
|
||||
@@ -56,6 +60,7 @@ const AppContextProvider = (props: { children: ReactNode }) => {
|
||||
const [userId, setUserId] = useState(0)
|
||||
const [username, setUsername] = useState('')
|
||||
const [displayName, setDisplayName] = useState('')
|
||||
const [isAdmin, setIsAdmin] = useState(false)
|
||||
const [mode, setMode] = useState(ModeType.Server)
|
||||
const [runTimes, setRunTimes] = useState<RunTimeType[]>([])
|
||||
|
||||
@@ -70,6 +75,7 @@ const AppContextProvider = (props: { children: ReactNode }) => {
|
||||
setUserId(data.id)
|
||||
setUsername(data.username)
|
||||
setDisplayName(data.displayName)
|
||||
setIsAdmin(data.isAdmin)
|
||||
setLoggedIn(true)
|
||||
})
|
||||
.catch(() => {
|
||||
@@ -107,6 +113,8 @@ const AppContextProvider = (props: { children: ReactNode }) => {
|
||||
setUsername,
|
||||
displayName,
|
||||
setDisplayName,
|
||||
isAdmin,
|
||||
setIsAdmin,
|
||||
mode,
|
||||
runTimes,
|
||||
logout
|
||||
|
||||
Reference in New Issue
Block a user