Projekt

Obecné

Profil

« Předchozí | Další » 

Revize db0f300f

Přidáno uživatelem Jaroslav Hrubý před asi 2 roky(ů)

Displaying username in navigation bar

Zobrazit rozdíly:

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