Browse Source

feat: for non-super user only show their own token

Signed-off-by: Pranav C <pranavxc@gmail.com>
pull/4134/head
Pranav C 2 years ago
parent
commit
e387d4b090
  1. 8
      packages/nc-gui/layouts/base.vue
  2. 8
      packages/nocodb/src/lib/meta/api/orgTokenApis.ts
  3. 10
      packages/nocodb/src/lib/meta/api/userApi/initStrategies.ts

8
packages/nc-gui/layouts/base.vue

@ -87,7 +87,7 @@ hooks.hook('page:finish', () => {
<template #overlay> <template #overlay>
<a-menu class="!py-0 leading-8 !rounded"> <a-menu class="!py-0 leading-8 !rounded">
<a-menu-item key="0" data-testid="nc-menu-accounts__user-settings" class="!rounded-t"> <a-menu-item key="0" data-testid="nc-menu-accounts__user-settings" class="!rounded-t">
<nuxt-link v-e="['c:navbar:user:email']" class="nc-project-menu-item group !no-underline" to="/user"> <nuxt-link v-e="['c:navbar:user:email']" class="nc-project-menu-item group !no-underline" to="/admin/users">
<MdiAt class="mt-1 group-hover:text-accent" />&nbsp; <MdiAt class="mt-1 group-hover:text-accent" />&nbsp;
<span class="prose group-hover:text-primary"> {{ email }}</span> <span class="prose group-hover:text-primary"> {{ email }}</span>
@ -107,7 +107,7 @@ hooks.hook('page:finish', () => {
</nuxt-link> </nuxt-link>
</a-menu-item> </a-menu-item>
<a-menu-divider class="!m-0" /> <a-menu-divider class="!m-0" />
<a-menu-item v-if="isUIAllowed('appStore')" key="0" class="!rounded-t"> <!-- <a-menu-item v-if="isUIAllowed('appStore')" key="0" class="!rounded-t">
<nuxt-link <nuxt-link
v-e="['c:settings:appstore', { page: true }]" v-e="['c:settings:appstore', { page: true }]"
class="nc-project-menu-item group !no-underline" class="nc-project-menu-item group !no-underline"
@ -115,12 +115,12 @@ hooks.hook('page:finish', () => {
> >
<MdiShieldAccountOutline class="mt-1 group-hover:text-accent" />&nbsp; <MdiShieldAccountOutline class="mt-1 group-hover:text-accent" />&nbsp;
<!-- todo: i18n --> &lt;!&ndash; todo: i18n &ndash;&gt;
<span class="prose group-hover:text-primary">Account management</span> <span class="prose group-hover:text-primary">Account management</span>
</nuxt-link> </nuxt-link>
</a-menu-item> </a-menu-item>
<a-menu-divider class="!m-0" /> <a-menu-divider class="!m-0" />-->
<a-menu-item key="1" class="!rounded-b group"> <a-menu-item key="1" class="!rounded-b group">
<div v-e="['a:navbar:user:sign-out']" class="nc-project-menu-item group" @click="logout"> <div v-e="['a:navbar:user:sign-out']" class="nc-project-menu-item group" @click="logout">

8
packages/nocodb/src/lib/meta/api/orgTokenApis.ts

@ -16,11 +16,13 @@ async function apiTokenList(req, res) {
} }
res.json( res.json(
new PagedResponseImpl(await ApiToken.listWithCreatedBy(req.query), { new PagedResponseImpl(
await ApiToken.listWithCreatedBy({ ...req.query, fk_user_id }),
{
...req.query, ...req.query,
count: await ApiToken.count(), count: await ApiToken.count(),
fk_user_id, }
}) )
); );
} }

10
packages/nocodb/src/lib/meta/api/userApi/initStrategies.ts

@ -119,9 +119,15 @@ export function initStrategies(router): void {
}, },
async (req, jwtPayload, done) => { async (req, jwtPayload, done) => {
// todo: improve this // todo: improve this
if (jwtPayload.roles?.split(',').includes(OrgUserRoles.SUPER)) { if (
req.ncProjectId &&
jwtPayload.roles?.split(',').includes(OrgUserRoles.SUPER)
) {
return User.getByEmail(jwtPayload?.email).then(async (user) => { return User.getByEmail(jwtPayload?.email).then(async (user) => {
return done(null, { ...user, roles: 'owner,creator' }); return done(null, {
...user,
roles: `owner,creator,${OrgUserRoles.SUPER}`,
});
}); });
} }

Loading…
Cancel
Save