mirror of https://github.com/nocodb/nocodb
Pranav C
2 years ago
2 changed files with 109 additions and 0 deletions
@ -0,0 +1,108 @@
|
||||
import { Tele } from 'nc-help'; |
||||
import { v4 as uuidv4 } from 'uuid'; |
||||
import Project from '../models/Project'; |
||||
import { NcError } from '../meta/helpers/catchError'; |
||||
// todo: load from config
|
||||
const config = { |
||||
dashboardPath: '/nc', |
||||
}; |
||||
|
||||
export async function createSharedBaseLink(param:{ |
||||
projectId: string; |
||||
roles: string; |
||||
password: string; |
||||
siteUrl: string; |
||||
}): Promise<any> { |
||||
const project = await Project.get(param.projectId); |
||||
|
||||
let roles = param?.roles; |
||||
if (!roles || (roles !== 'editor' && roles !== 'viewer')) { |
||||
roles = 'viewer'; |
||||
} |
||||
|
||||
if (!project) { |
||||
NcError.badRequest('Invalid project id'); |
||||
} |
||||
|
||||
const data: any = { |
||||
uuid: uuidv4(), |
||||
password: param?.password, |
||||
roles, |
||||
}; |
||||
|
||||
await Project.update(project.id, data); |
||||
|
||||
data.url = `${param.siteUrl}${config.dashboardPath}#/nc/base/${data.uuid}`; |
||||
delete data.password; |
||||
Tele.emit('evt', { evt_type: 'sharedBase:generated-link' }); |
||||
return data; |
||||
} |
||||
|
||||
export async function updateSharedBaseLink(param: { |
||||
projectId: string; |
||||
roles: string; |
||||
password: string; |
||||
siteUrl: string; |
||||
}): Promise<any> { |
||||
const project = await Project.get(param.projectId); |
||||
|
||||
let roles = param.roles; |
||||
if (!roles || (roles !== 'editor' && roles !== 'viewer')) { |
||||
roles = 'viewer'; |
||||
} |
||||
|
||||
if (!project) { |
||||
NcError.badRequest('Invalid project id'); |
||||
} |
||||
const data: any = { |
||||
uuid: project.uuid || uuidv4(), |
||||
password: param.password, |
||||
roles, |
||||
}; |
||||
|
||||
await Project.update(project.id, data); |
||||
|
||||
data.url = `${param.siteUrl}${config.dashboardPath}#/nc/base/${data.uuid}`; |
||||
delete data.password; |
||||
Tele.emit('evt', { evt_type: 'sharedBase:generated-link' }); |
||||
return data; |
||||
} |
||||
|
||||
export async function disableSharedBaseLink(param:{ |
||||
projectId: string; |
||||
}): Promise<any> { |
||||
const project = await Project.get(param.projectId); |
||||
|
||||
if (!project) { |
||||
NcError.badRequest('Invalid project id'); |
||||
} |
||||
const data: any = { |
||||
uuid: null, |
||||
}; |
||||
|
||||
await Project.update(project.id, data); |
||||
|
||||
Tele.emit('evt', { evt_type: 'sharedBase:disable-link' }); |
||||
|
||||
return { uuid: null } |
||||
} |
||||
|
||||
export async function getSharedBaseLink(param:{ |
||||
projectId: string; |
||||
siteUrl: string; |
||||
}): Promise<any> { |
||||
const project = await Project.get(param.projectId); |
||||
|
||||
if (!project) { |
||||
NcError.badRequest('Invalid project id'); |
||||
} |
||||
const data: any = { |
||||
uuid: project.uuid, |
||||
roles: project.roles, |
||||
}; |
||||
if (data.uuid) |
||||
data.url = `${param.siteUrl}${config.dashboardPath}#/nc/base/${data.shared_base_id}`; |
||||
|
||||
return data; |
||||
} |
||||
|
Loading…
Reference in new issue