Browse Source

Merge pull request #2365 from nocodb/develop

pull/2366/head
github-actions[bot] 2 years ago committed by GitHub
parent
commit
be79461c82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 63
      packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue
  2. 15
      packages/nocodb/src/lib/meta/api/sync/importApis.ts
  3. 18
      packages/nocodb/src/lib/meta/api/userApi/helpers.ts
  4. 41
      packages/nocodb/src/lib/meta/api/userApi/userApis.ts

63
packages/nc-gui/components/project/spreadsheet/components/editableCell/DateTimePickerCell.vue

@ -1,21 +1,27 @@
<template>
<div>
<v-datetime-picker
ref="picker"
v-model="localState"
class="caption xc-date-time-picker"
:text-field-props="{
class:'caption mt-0 pt-0',
flat:true,
solo:true,
dense:true,
hideDetails:true
}"
:time-picker-props="{
format:'24hr'
}"
v-on="parentListeners"
/>
<div v-show="!showMessage">
<v-datetime-picker
ref="picker"
v-model="localState"
class="caption xc-date-time-picker"
:text-field-props="{
class:'caption mt-0 pt-0',
flat:true,
solo:true,
dense:true,
hideDetails:true
}"
:time-picker-props="{
format:'24hr'
}"
v-on="parentListeners"
/>
</div>
<div v-show="showMessage" class="edit-warning" @dblclick="$refs.picker.display = true">
<!-- TODO: i18n -->
ERR: Couldn't parse {{ this.value }}
</div>
</div>
</template>
@ -31,6 +37,9 @@ export default {
props: {
value: [String, Date, Number], ignoreFocus: Boolean
},
data: () => ({
showMessage: false
}),
computed: {
isMysql() {
return ['mysql', 'mysql2'].indexOf(this.$store.getters['project/GtrClientType'])
@ -40,8 +49,13 @@ export default {
if (!this.value) {
return this.value
}
return (/^\d+$/.test(this.value) ? dayjs(+this.value) : dayjs(this.value))
.format('YYYY-MM-DD HH:mm')
const d = (/^\d+$/.test(this.value) ? dayjs(+this.value) : dayjs(this.value))
if (d.isValid()) {
this.showMessage = false
return d.format('YYYY-MM-DD HH:mm')
} else {
this.showMessage = true
}
},
set(value) {
if (this.isMysql) {
@ -65,6 +79,13 @@ export default {
}
},
mounted() {
// listen dialog click:outside event and save on close
if (this.$refs.picker && this.$refs.picker.$children && this.$refs.picker.$children[0]) {
this.$refs.picker.$children[0].$on('click:outside', () => {
this.$refs.picker.okHandler()
})
}
if (!this.ignoreFocus) {
this.$refs.picker.display = true
}
@ -78,6 +99,12 @@ export default {
padding-top: 0 !important;
font-size: inherit !important;
}
.edit-warning {
padding: 10px;
text-align: left;
color: #E65100;
}
</style>
<!--
/**

15
packages/nocodb/src/lib/meta/api/sync/importApis.ts

@ -7,7 +7,7 @@ import NocoJobs from '../../../jobs/NocoJobs';
import job, { AirtableSyncConfig } from './helpers/job';
import SyncSource from '../../../models/SyncSource';
import Noco from '../../../Noco';
import * as jwt from 'jsonwebtoken';
import { genJwt } from '../userApi/helpers';
const AIRTABLE_IMPORT_JOB = 'AIRTABLE_IMPORT_JOB';
const AIRTABLE_PROGRESS_JOB = 'AIRTABLE_PROGRESS_JOB';
@ -76,18 +76,7 @@ export default (router: Router, clients: { [id: string]: Socket }) => {
const syncSource = await SyncSource.get(req.params.syncId);
const user = await syncSource.getUser();
const token = jwt.sign(
{
email: user.email,
firstname: user.firstname,
lastname: user.lastname,
id: user.id,
roles: user.roles
},
Noco.getConfig().auth.jwt.secret,
Noco.getConfig().auth.jwt.options
);
const token = genJwt(user, Noco.getConfig());
// Treat default baseUrl as siteUrl from req object
let baseURL = (req as any).ncSiteUrl;

18
packages/nocodb/src/lib/meta/api/userApi/helpers.ts

@ -0,0 +1,18 @@
import * as jwt from 'jsonwebtoken';
import User from '../../../models/User';
import { NcConfig } from '../../../../interface/config';
export function genJwt(user: User, config: NcConfig) {
return jwt.sign(
{
email: user.email,
firstname: user.firstname,
lastname: user.lastname,
id: user.id,
roles: user.roles,
token_version: user.token_version
},
config.auth.jwt.secret,
config.auth.jwt.options
);
}

41
packages/nocodb/src/lib/meta/api/userApi/userApis.ts

@ -10,7 +10,6 @@ import User from '../../../models/User';
import { Tele } from 'nc-help';
const { v4: uuidv4 } = require('uuid');
import * as jwt from 'jsonwebtoken';
import Audit from '../../../models/Audit';
import crypto from 'crypto';
import NcPluginMgrv2 from '../../helpers/NcPluginMgrv2';
@ -20,6 +19,7 @@ import extractProjectIdAndAuthenticate from '../../helpers/extractProjectIdAndAu
import ncMetaAclMw from '../../helpers/ncMetaAclMw';
import { MetaTable } from '../../../utils/globals';
import Noco from '../../../Noco';
import { genJwt } from './helpers';
export async function signup(req: Request, res: Response<TableType>) {
const {
@ -147,18 +147,7 @@ export async function signup(req: Request, res: Response<TableType>) {
});
res.json({
token: jwt.sign(
{
email: user.email,
firstname: user.firstname,
lastname: user.lastname,
id: user.id,
roles: user.roles,
token_version: user.token_version
},
Noco.getConfig().auth.jwt.secret,
Noco.getConfig().auth.jwt.options
)
token: genJwt(user, Noco.getConfig())
} as any);
}
@ -205,19 +194,7 @@ async function successfulSignIn({
});
res.json({
token: jwt.sign(
{
email: user.email,
firstname: user.firstname,
lastname: user.lastname,
id: user.id,
roles: user.roles,
token_version
},
Noco.getConfig().auth.jwt.secret,
Noco.getConfig().auth.jwt.options
)
token: genJwt(user, Noco.getConfig())
} as any);
} catch (e) {
console.log(e);
@ -477,17 +454,7 @@ async function refreshToken(req, res): Promise<any> {
setTokenCookie(res, refreshToken);
res.json({
token: jwt.sign(
{
email: user.email,
firstname: user.firstname,
lastname: user.lastname,
id: user.id,
roles: user.roles
},
Noco.getConfig().auth.jwt.secret,
Noco.getConfig().auth.jwt.options
)
token: genJwt(user, Noco.getConfig())
} as any);
} catch (e) {
return res.status(400).json({ msg: e.message });

Loading…
Cancel
Save