Revize db0f300f
Přidáno uživatelem Jaroslav Hrubý před téměř 3 roky(ů)
webapp/api/api.ts | ||
---|---|---|
1160 | 1160 |
*/ |
1161 | 1161 |
'users'?: Array<UserInfo> | null; |
1162 | 1162 |
} |
1163 |
/** |
|
1164 |
* |
|
1165 |
* @export |
|
1166 |
* @interface UserMeResponse |
|
1167 |
*/ |
|
1168 |
export interface UserMeResponse { |
|
1169 |
/** |
|
1170 |
* |
|
1171 |
* @type {string} |
|
1172 |
* @memberof UserMeResponse |
|
1173 |
*/ |
|
1174 |
'name'?: string | null; |
|
1175 |
/** |
|
1176 |
* |
|
1177 |
* @type {ERole} |
|
1178 |
* @memberof UserMeResponse |
|
1179 |
*/ |
|
1180 |
'role'?: ERole; |
|
1181 |
} |
|
1163 | 1182 |
|
1164 | 1183 |
/** |
1165 | 1184 |
* AnnotationApi - axios parameter creator |
... | ... | |
3160 | 3179 |
|
3161 | 3180 |
|
3162 | 3181 |
|
3182 |
setSearchParams(localVarUrlObj, localVarQueryParameter); |
|
3183 |
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; |
|
3184 |
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; |
|
3185 |
|
|
3186 |
return { |
|
3187 |
url: toPathString(localVarUrlObj), |
|
3188 |
options: localVarRequestOptions, |
|
3189 |
}; |
|
3190 |
}, |
|
3191 |
/** |
|
3192 |
* |
|
3193 |
* @param {*} [options] Override http request option. |
|
3194 |
* @throws {RequiredError} |
|
3195 |
*/ |
|
3196 |
usersMeGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => { |
|
3197 |
const localVarPath = `/users/me`; |
|
3198 |
// use dummy base URL string because the URL constructor only accepts absolute URLs. |
|
3199 |
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); |
|
3200 |
let baseOptions; |
|
3201 |
if (configuration) { |
|
3202 |
baseOptions = configuration.baseOptions; |
|
3203 |
} |
|
3204 |
|
|
3205 |
const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; |
|
3206 |
const localVarHeaderParameter = {} as any; |
|
3207 |
const localVarQueryParameter = {} as any; |
|
3208 |
|
|
3209 |
|
|
3210 |
|
|
3163 | 3211 |
setSearchParams(localVarUrlObj, localVarQueryParameter); |
3164 | 3212 |
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; |
3165 | 3213 |
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; |
... | ... | |
3261 | 3309 |
const localVarAxiosArgs = await localVarAxiosParamCreator.usersGet(options); |
3262 | 3310 |
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); |
3263 | 3311 |
}, |
3312 |
/** |
|
3313 |
* |
|
3314 |
* @param {*} [options] Override http request option. |
|
3315 |
* @throws {RequiredError} |
|
3316 |
*/ |
|
3317 |
async usersMeGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UserMeResponse>> { |
|
3318 |
const localVarAxiosArgs = await localVarAxiosParamCreator.usersMeGet(options); |
|
3319 |
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); |
|
3320 |
}, |
|
3264 | 3321 |
/** |
3265 | 3322 |
* |
3266 | 3323 |
* @param {CreateUserRequest} [createUserRequest] |
... | ... | |
3325 | 3382 |
usersGet(options?: any): AxiosPromise<UserList> { |
3326 | 3383 |
return localVarFp.usersGet(options).then((request) => request(axios, basePath)); |
3327 | 3384 |
}, |
3385 |
/** |
|
3386 |
* |
|
3387 |
* @param {*} [options] Override http request option. |
|
3388 |
* @throws {RequiredError} |
|
3389 |
*/ |
|
3390 |
usersMeGet(options?: any): AxiosPromise<UserMeResponse> { |
|
3391 |
return localVarFp.usersMeGet(options).then((request) => request(axios, basePath)); |
|
3392 |
}, |
|
3328 | 3393 |
/** |
3329 | 3394 |
* |
3330 | 3395 |
* @param {CreateUserRequest} [createUserRequest] |
... | ... | |
3398 | 3463 |
return UserApiFp(this.configuration).usersGet(options).then((request) => request(this.axios, this.basePath)); |
3399 | 3464 |
} |
3400 | 3465 |
|
3466 |
/** |
|
3467 |
* |
|
3468 |
* @param {*} [options] Override http request option. |
|
3469 |
* @throws {RequiredError} |
|
3470 |
* @memberof UserApi |
|
3471 |
*/ |
|
3472 |
public usersMeGet(options?: AxiosRequestConfig) { |
|
3473 |
return UserApiFp(this.configuration).usersMeGet(options).then((request) => request(this.axios, this.basePath)); |
|
3474 |
} |
|
3475 |
|
|
3401 | 3476 |
/** |
3402 | 3477 |
* |
3403 | 3478 |
* @param {CreateUserRequest} [createUserRequest] |
webapp/components/navigation/AdminNavBar.tsx | ||
---|---|---|
1 |
import React, { useCallback, useContext } from 'react'; |
|
1 |
import React, { useCallback, useContext, useEffect, useState } from 'react';
|
|
2 | 2 |
import { Menu } from 'antd'; |
3 | 3 |
import { useRouter } from 'next/router'; |
4 | 4 |
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; |
... | ... | |
11 | 11 |
faTags, |
12 | 12 |
faBookmark, |
13 | 13 |
} from '@fortawesome/free-solid-svg-icons'; |
14 |
import { userController } from '../../controllers'; |
|
15 |
import { UserInfo } from '../../api'; |
|
14 | 16 |
|
15 | 17 |
const AdminNavBar = () => { |
16 | 18 |
const router = useRouter(); |
17 | 19 |
const { logout } = useContext(LoggedUserContext); |
18 | 20 |
const { SubMenu } = Menu; |
21 |
const [name, setName] = useState<string>(''); |
|
19 | 22 |
|
20 | 23 |
const handleLogout = useCallback(() => { |
21 | 24 |
logout(); |
22 | 25 |
router.push('/login'); |
23 | 26 |
}, [logout, router]); |
24 | 27 |
|
28 |
async function fetchUsername() { |
|
29 |
let usr = (await userController.usersMeGet()).data.name; |
|
30 |
setName(usr ? usr : ''); |
|
31 |
} |
|
32 |
|
|
33 |
useEffect(() => { |
|
34 |
fetchUsername(); |
|
35 |
}, []); |
|
36 |
|
|
25 | 37 |
return ( |
26 | 38 |
<Menu theme="dark" mode="horizontal"> |
27 | 39 |
<Menu.Item style={{}} key="1" onClick={() => router.push('/documents/admin')}> |
... | ... | |
37 | 49 |
<FontAwesomeIcon icon={faFileExport} /> Export |
38 | 50 |
</Menu.Item> |
39 | 51 |
|
40 |
<SubMenu |
|
41 |
icon={<FontAwesomeIcon icon={faUser} />} |
|
42 |
key="account" |
|
43 |
title={'Admin XY'} // TODO show username |
|
44 |
> |
|
52 |
<SubMenu icon={<FontAwesomeIcon icon={faUser} />} key="account" title={name}> |
|
45 | 53 |
<Menu.Item key="setting:2" onClick={() => handleLogout()}> |
46 | 54 |
Odhlásit se |
47 | 55 |
</Menu.Item> |
webapp/components/navigation/UserNavBar.tsx | ||
---|---|---|
1 |
import React, { useCallback, useContext } from 'react'; |
|
1 |
import React, { useCallback, useContext, useEffect, useState } from 'react';
|
|
2 | 2 |
import { Menu } from 'antd'; |
3 | 3 |
import { useRouter } from 'next/router'; |
4 | 4 |
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; |
5 | 5 |
import { faFileLines, faUser } from '@fortawesome/free-solid-svg-icons'; |
6 | 6 |
import { LoggedUserContext } from '../../contexts/LoggedUserContext'; |
7 |
import { userController } from '../../controllers'; |
|
7 | 8 |
|
8 | 9 |
const UserNavBar = () => { |
9 | 10 |
const router = useRouter(); |
10 | 11 |
const { logout } = useContext(LoggedUserContext); |
11 | 12 |
const { SubMenu } = Menu; |
13 |
const [name, setName] = useState<string>(''); |
|
12 | 14 |
|
13 | 15 |
const handleLogout = useCallback(() => { |
14 | 16 |
logout(); |
15 | 17 |
router.push('/login'); |
16 | 18 |
}, [logout, router]); |
17 | 19 |
|
20 |
async function fetchUsername() { |
|
21 |
let usr = (await userController.usersMeGet()).data.name; |
|
22 |
setName(usr ? usr : ''); |
|
23 |
} |
|
24 |
|
|
25 |
useEffect(() => { |
|
26 |
fetchUsername(); |
|
27 |
}, []); |
|
28 |
|
|
18 | 29 |
return ( |
19 | 30 |
<Menu theme="dark" mode="horizontal"> |
20 | 31 |
<Menu.Item key="1" onClick={() => router.push('/documents/annotator')}> |
21 | 32 |
<FontAwesomeIcon icon={faFileLines} /> Dokumenty |
22 | 33 |
</Menu.Item> |
23 | 34 |
|
24 |
<SubMenu |
|
25 |
key="account" |
|
26 |
icon={<FontAwesomeIcon icon={faUser} />} |
|
27 |
title={'Anotátor XY'} // TODO show username |
|
28 |
> |
|
35 |
<SubMenu key="account" icon={<FontAwesomeIcon icon={faUser} />} title={name}> |
|
29 | 36 |
<Menu.Item key="setting:2" onClick={() => handleLogout()}> |
30 | 37 |
Odhlásit se |
31 | 38 |
</Menu.Item> |
Také k dispozici: Unified diff
Displaying username in navigation bar