1
0
mirror of https://github.com/sasjs/server.git synced 2025-12-11 19:44:35 +00:00

fix: add isAdmin attribute to return response of get session and login requests

This commit is contained in:
2022-06-23 22:50:00 +05:00
parent 4c6b9c5e93
commit bdf63df1d9
5 changed files with 23 additions and 6 deletions

View File

@@ -2,6 +2,10 @@ import express from 'express'
import { Request, Security, Route, Tags, Example, Get } from 'tsoa' import { Request, Security, Route, Tags, Example, Get } from 'tsoa'
import { UserResponse } from './user' import { UserResponse } from './user'
interface SessionResponse extends UserResponse {
isAdmin: boolean
}
@Security('bearerAuth') @Security('bearerAuth')
@Route('SASjsApi/session') @Route('SASjsApi/session')
@Tags('Session') @Tags('Session')
@@ -10,15 +14,16 @@ export class SessionController {
* @summary Get session info (username). * @summary Get session info (username).
* *
*/ */
@Example<UserResponse>({ @Example<SessionResponse>({
id: 123, id: 123,
username: 'johnusername', username: 'johnusername',
displayName: 'John' displayName: 'John',
isAdmin: false
}) })
@Get('/') @Get('/')
public async session( public async session(
@Request() request: express.Request @Request() request: express.Request
): Promise<UserResponse> { ): Promise<SessionResponse> {
return session(request) return session(request)
} }
} }
@@ -26,5 +31,6 @@ export class SessionController {
const session = (req: express.Request) => ({ const session = (req: express.Request) => ({
id: req.user!.userId, id: req.user!.userId,
username: req.user!.username, username: req.user!.username,
displayName: req.user!.displayName displayName: req.user!.displayName,
isAdmin: req.user!.isAdmin
}) })

View File

@@ -99,7 +99,8 @@ const login = async (
user: { user: {
id: user.id, id: user.id,
username: user.username, username: user.username,
displayName: user.displayName displayName: user.displayName,
isAdmin: user.isAdmin
} }
} }
} }

View File

@@ -79,7 +79,8 @@ describe('web', () => {
expect(res.body.user).toEqual({ expect(res.body.user).toEqual({
id: expect.any(Number), id: expect.any(Number),
username: user.username, username: user.username,
displayName: user.displayName displayName: user.displayName,
isAdmin: user.isAdmin
}) })
}) })
}) })

View File

@@ -30,6 +30,7 @@ const Login = () => {
appContext.setUserId?.(user.id) appContext.setUserId?.(user.id)
appContext.setUsername?.(user.username) appContext.setUsername?.(user.username)
appContext.setDisplayName?.(user.displayName) appContext.setDisplayName?.(user.displayName)
appContext.setIsAdmin?.(user.isAdmin)
appContext.setLoggedIn?.(loggedIn) appContext.setLoggedIn?.(loggedIn)
} }
} }

View File

@@ -29,6 +29,8 @@ interface AppContextProps {
setUsername: Dispatch<SetStateAction<string>> | null setUsername: Dispatch<SetStateAction<string>> | null
displayName: string displayName: string
setDisplayName: Dispatch<SetStateAction<string>> | null setDisplayName: Dispatch<SetStateAction<string>> | null
isAdmin: boolean
setIsAdmin: Dispatch<SetStateAction<boolean>> | null
mode: ModeType mode: ModeType
runTimes: RunTimeType[] runTimes: RunTimeType[]
logout: (() => void) | null logout: (() => void) | null
@@ -44,6 +46,8 @@ export const AppContext = createContext<AppContextProps>({
setUsername: null, setUsername: null,
displayName: '', displayName: '',
setDisplayName: null, setDisplayName: null,
isAdmin: false,
setIsAdmin: null,
mode: ModeType.Server, mode: ModeType.Server,
runTimes: [], runTimes: [],
logout: null logout: null
@@ -56,6 +60,7 @@ const AppContextProvider = (props: { children: ReactNode }) => {
const [userId, setUserId] = useState(0) const [userId, setUserId] = useState(0)
const [username, setUsername] = useState('') const [username, setUsername] = useState('')
const [displayName, setDisplayName] = useState('') const [displayName, setDisplayName] = useState('')
const [isAdmin, setIsAdmin] = useState(false)
const [mode, setMode] = useState(ModeType.Server) const [mode, setMode] = useState(ModeType.Server)
const [runTimes, setRunTimes] = useState<RunTimeType[]>([]) const [runTimes, setRunTimes] = useState<RunTimeType[]>([])
@@ -70,6 +75,7 @@ const AppContextProvider = (props: { children: ReactNode }) => {
setUserId(data.id) setUserId(data.id)
setUsername(data.username) setUsername(data.username)
setDisplayName(data.displayName) setDisplayName(data.displayName)
setIsAdmin(data.isAdmin)
setLoggedIn(true) setLoggedIn(true)
}) })
.catch(() => { .catch(() => {
@@ -107,6 +113,8 @@ const AppContextProvider = (props: { children: ReactNode }) => {
setUsername, setUsername,
displayName, displayName,
setDisplayName, setDisplayName,
isAdmin,
setIsAdmin,
mode, mode,
runTimes, runTimes,
logout logout