forked from geolba/tethys.backend
- update to AdonisJS 6
This commit is contained in:
parent
f828ca4491
commit
cb51a4136f
167 changed files with 21485 additions and 21212 deletions
|
@ -1,4 +1,4 @@
|
|||
import { BaseModel as LucidBaseModel } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { BaseModel as LucidBaseModel } from '@adonisjs/lucid/orm';
|
||||
// import { ManyToManyQueryClient } from '@ioc:Adonis/Lucid/Orm';
|
||||
|
||||
// export class CustomManyToManyQueryClient extends ManyToManyQueryClient {
|
||||
|
@ -29,6 +29,8 @@ export default class BaseModel extends LucidBaseModel {
|
|||
*/
|
||||
// private fillInvoked: boolean = false;
|
||||
|
||||
[key: string]: any;
|
||||
|
||||
public static fillable: string[] = [];
|
||||
|
||||
public fill(attributes: any, allowExtraProperties: boolean = false): this {
|
||||
|
@ -47,7 +49,7 @@ export default class BaseModel extends LucidBaseModel {
|
|||
// this.fillInvoked = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Merge bulk attributes with existing attributes.
|
||||
*
|
||||
|
@ -118,6 +120,8 @@ export default class BaseModel extends LucidBaseModel {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// export class DatasetRelatedBaseModel extends LucidBaseModel {
|
||||
// public dataset: BelongsTo<typeof Dataset>;
|
||||
// }
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { column, SnakeCaseNamingStrategy, manyToMany, ManyToMany, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import CollectionRole from './CollectionRole';
|
||||
import { column, SnakeCaseNamingStrategy, manyToMany, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import CollectionRole from './CollectionRole.js';
|
||||
import type { ManyToMany } from "@adonisjs/lucid/types/relations";
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Collection extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { column, SnakeCaseNamingStrategy, hasMany, HasMany } from '@ioc:Adonis/Lucid/Orm';
|
||||
import BaseModel from './BaseModel';
|
||||
import Collection from './Collection';
|
||||
import { column, SnakeCaseNamingStrategy, hasMany } from '@adonisjs/lucid/orm';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import Collection from './Collection.js';
|
||||
import type { HasMany } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class CollectionRole extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import { column, SnakeCaseNamingStrategy, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { column, SnakeCaseNamingStrategy, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Coverage extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -2,31 +2,31 @@ import {
|
|||
column,
|
||||
SnakeCaseNamingStrategy,
|
||||
manyToMany,
|
||||
ManyToMany,
|
||||
belongsTo,
|
||||
BelongsTo,
|
||||
hasMany,
|
||||
HasMany,
|
||||
computed,
|
||||
hasOne,
|
||||
HasOne,
|
||||
} from '@ioc:Adonis/Lucid/Orm';
|
||||
hasOne
|
||||
} from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import dayjs from 'dayjs';
|
||||
import Person from './Person';
|
||||
import User from './User';
|
||||
import Title from './Title';
|
||||
import Description from './Description';
|
||||
import License from './License';
|
||||
import Subject from './Subject';
|
||||
import File from './File';
|
||||
import Coverage from './Coverage';
|
||||
import DatasetReference from './DatasetReference';
|
||||
import Collection from './Collection';
|
||||
import DatasetIdentifier from './DatasetIdentifier';
|
||||
import Project from './Project';
|
||||
import DocumentXmlCache from './DocumentXmlCache';
|
||||
import DatasetExtension from 'App/Models/Traits/DatasetExtension'; // Adjust the import path
|
||||
import Person from './Person.js';
|
||||
import User from './User.js';
|
||||
import Title from './Title.js';
|
||||
import Description from './Description.js';
|
||||
import License from './License.js';
|
||||
import Subject from './Subject.js';
|
||||
import File from './File.js';
|
||||
import Coverage from './Coverage.js';
|
||||
import DatasetReference from './DatasetReference.js';
|
||||
import Collection from './Collection.js';
|
||||
import DatasetIdentifier from './DatasetIdentifier.js';
|
||||
import Project from './Project.js';
|
||||
import DocumentXmlCache from './DocumentXmlCache.js';
|
||||
import DatasetExtension from '#app/Models/Traits/DatasetExtension';
|
||||
import type { ManyToMany } from "@adonisjs/lucid/types/relations";
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
import type { HasMany } from "@adonisjs/lucid/types/relations";
|
||||
import type { HasOne } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Dataset extends DatasetExtension {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import { column, SnakeCaseNamingStrategy, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { column, SnakeCaseNamingStrategy, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class DatasetIdentifier extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
import { column, SnakeCaseNamingStrategy, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { column, SnakeCaseNamingStrategy, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class DatasetReference extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { column, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import { column, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Description extends BaseModel {
|
||||
public static primaryKey = 'id';
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import { column, BaseModel, SnakeCaseNamingStrategy, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import Dataset from './Dataset';
|
||||
import { column, BaseModel, SnakeCaseNamingStrategy, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import Dataset from './Dataset.js';
|
||||
import { builder, create } from 'xmlbuilder2';
|
||||
import { XMLBuilder } from 'xmlbuilder2/lib/interfaces';
|
||||
import Database from '@ioc:Adonis/Lucid/Database';
|
||||
import { XMLBuilder } from 'xmlbuilder2/lib/interfaces.js';
|
||||
import db from '@adonisjs/lucid/services/db';
|
||||
import { DateTime } from 'luxon';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class DocumentXmlCache extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
@ -86,7 +87,7 @@ export default class DocumentXmlCache extends BaseModel {
|
|||
// Assuming 'DocumentXmlCache' has a table with a 'server_date_modified' column in your database
|
||||
public static async hasValidEntry(datasetId: number, datasetServerDateModified: DateTime): Promise<boolean> {
|
||||
const serverDateModifiedString: string = datasetServerDateModified.toFormat('yyyy-MM-dd HH:mm:ss'); // Convert DateTime to ISO string
|
||||
const query = Database.from(this.table)
|
||||
const query = db.from(this.table)
|
||||
.where('document_id', datasetId)
|
||||
.where('server_date_modified', '>=', serverDateModifiedString) // Check if server_date_modified is newer or equal
|
||||
.first();
|
||||
|
|
|
@ -1,13 +1,22 @@
|
|||
import { DateTime } from 'luxon';
|
||||
import { column, hasMany, HasMany, belongsTo, BelongsTo, SnakeCaseNamingStrategy, computed } from '@ioc:Adonis/Lucid/Orm';
|
||||
import HashValue from './HashValue';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import { column, hasMany, belongsTo, SnakeCaseNamingStrategy, computed } from '@adonisjs/lucid/orm';
|
||||
import HashValue from './HashValue.js';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
// import { Buffer } from 'buffer';
|
||||
import * as fs from 'fs';
|
||||
import crypto from 'crypto';
|
||||
import { TransactionClientContract } from '@ioc:Adonis/Lucid/Database';
|
||||
import Drive from '@ioc:Adonis/Core/Drive';
|
||||
// import Drive from '@ioc:Adonis/Core/Drive';
|
||||
import Drive from '@adonisjs/drive';
|
||||
|
||||
import type { HasMany } from "@adonisjs/lucid/types/relations";
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
// import { TransactionClientContract } from "@adonisjs/lucid/database";
|
||||
import { TransactionClientContract } from '@adonisjs/lucid/types/database';
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export default class File extends BaseModel {
|
||||
// private readonly _data: Uint8Array;
|
||||
|
@ -162,7 +171,7 @@ export default class File extends BaseModel {
|
|||
await super.delete();
|
||||
}
|
||||
|
||||
private async _checksumFile(path, hashName = 'md5'): Promise<string> {
|
||||
private async _checksumFile(path: string, hashName = 'md5'): Promise<string> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const hash = crypto.createHash(hashName);
|
||||
const stream = fs.createReadStream(path);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import { column, BaseModel, belongsTo, BelongsTo, SnakeCaseNamingStrategy } from '@ioc:Adonis/Lucid/Orm';
|
||||
import File from './File';
|
||||
import { column, BaseModel, belongsTo, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm';
|
||||
import File from './File.js';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class HashValue extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { column, SnakeCaseNamingStrategy } from '@ioc:Adonis/Lucid/Orm';
|
||||
import BaseModel from './BaseModel';
|
||||
import { column, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm';
|
||||
import BaseModel from './BaseModel.js';
|
||||
// import { DateTime } from 'luxon';
|
||||
|
||||
export default class Language extends BaseModel {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { column, SnakeCaseNamingStrategy } from '@ioc:Adonis/Lucid/Orm';
|
||||
import BaseModel from './BaseModel';
|
||||
import { column, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm';
|
||||
import BaseModel from './BaseModel.js';
|
||||
|
||||
export default class License extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import { column, manyToMany, ManyToMany, SnakeCaseNamingStrategy, beforeUpdate, beforeCreate } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { column, manyToMany, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import dayjs from 'dayjs';
|
||||
import Role from 'App/Models/Role';
|
||||
import BaseModel from './BaseModel';
|
||||
import Role from '#app/Models/Role';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import type { ManyToMany } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Permission extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
@ -44,12 +45,12 @@ export default class Permission extends BaseModel {
|
|||
})
|
||||
public updated_at: DateTime;
|
||||
|
||||
@beforeCreate()
|
||||
@beforeUpdate()
|
||||
public static async resetDate(role) {
|
||||
role.created_at = this.formatDateTime(role.created_at);
|
||||
role.updated_at = this.formatDateTime(role.updated_at);
|
||||
}
|
||||
// @beforeCreate()
|
||||
// @beforeUpdate()
|
||||
// public static async resetDate(role) {
|
||||
// role.created_at = this.formatDateTime(role.created_at);
|
||||
// role.updated_at = this.formatDateTime(role.updated_at);
|
||||
// }
|
||||
|
||||
// public static boot() {
|
||||
// super.boot()
|
||||
|
@ -64,22 +65,22 @@ export default class Permission extends BaseModel {
|
|||
// })
|
||||
// }
|
||||
|
||||
private static formatDateTime(datetime) {
|
||||
let value = new Date(datetime);
|
||||
return datetime
|
||||
? value.getFullYear() +
|
||||
'-' +
|
||||
(value.getMonth() + 1) +
|
||||
'-' +
|
||||
value.getDate() +
|
||||
' ' +
|
||||
value.getHours() +
|
||||
':' +
|
||||
value.getMinutes() +
|
||||
':' +
|
||||
value.getSeconds()
|
||||
: datetime;
|
||||
}
|
||||
// private static formatDateTime(datetime) {
|
||||
// let value = new Date(datetime);
|
||||
// return datetime
|
||||
// ? value.getFullYear() +
|
||||
// '-' +
|
||||
// (value.getMonth() + 1) +
|
||||
// '-' +
|
||||
// value.getDate() +
|
||||
// ' ' +
|
||||
// value.getHours() +
|
||||
// ':' +
|
||||
// value.getMinutes() +
|
||||
// ':' +
|
||||
// value.getSeconds()
|
||||
// : datetime;
|
||||
// }
|
||||
|
||||
// @belongsTo(() => Role)
|
||||
// public role: BelongsTo<typeof Role>;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
import { column, SnakeCaseNamingStrategy, computed, manyToMany, ManyToMany } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { column, SnakeCaseNamingStrategy, computed, manyToMany } from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import dayjs from 'dayjs';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import type { ManyToMany } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Person extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { column, SnakeCaseNamingStrategy } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { column, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm';
|
||||
import { DateTime } from 'luxon';
|
||||
import BaseModel from './BaseModel';
|
||||
import BaseModel from './BaseModel.js';
|
||||
|
||||
export default class Project extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import { column, SnakeCaseNamingStrategy, manyToMany, ManyToMany, beforeCreate, beforeUpdate } from '@ioc:Adonis/Lucid/Orm';
|
||||
import BaseModel from './BaseModel';
|
||||
import { column, SnakeCaseNamingStrategy, manyToMany, beforeCreate, beforeUpdate } from '@adonisjs/lucid/orm';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import { DateTime } from 'luxon';
|
||||
// import moment from 'moment';
|
||||
import dayjs from 'dayjs';
|
||||
import User from './User';
|
||||
import Permission from 'App/Models/Permission';
|
||||
import User from './User.js';
|
||||
import Permission from '#app/Models/Permission';
|
||||
import type { ManyToMany } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Role extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
@ -46,7 +47,7 @@ export default class Role extends BaseModel {
|
|||
|
||||
@beforeCreate()
|
||||
@beforeUpdate()
|
||||
public static async resetDate(role) {
|
||||
public static async resetDate(role: Role) {
|
||||
role.created_at = this.formatDateTime(role.created_at);
|
||||
role.updated_at = this.formatDateTime(role.updated_at);
|
||||
}
|
||||
|
@ -64,7 +65,7 @@ export default class Role extends BaseModel {
|
|||
// });
|
||||
// }
|
||||
|
||||
private static formatDateTime(datetime) {
|
||||
private static formatDateTime(datetime: any) {
|
||||
let value = new Date(datetime);
|
||||
return datetime
|
||||
? value.getFullYear() +
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import { column, SnakeCaseNamingStrategy, manyToMany, ManyToMany, computed} from '@ioc:Adonis/Lucid/Orm';
|
||||
import BaseModel from './BaseModel';
|
||||
import { column, SnakeCaseNamingStrategy, manyToMany, computed} from '@adonisjs/lucid/orm';
|
||||
import BaseModel from './BaseModel.js';
|
||||
|
||||
import { DateTime } from 'luxon';
|
||||
import dayjs from 'dayjs';
|
||||
import Dataset from './Dataset';
|
||||
import Dataset from './Dataset.js';
|
||||
import type { ManyToMany } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class Subject extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import { column, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import { column, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
// import { DatasetRelatedBaseModel } from './BaseModel';
|
||||
|
||||
export default class Title extends BaseModel {
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import { column, BaseModel, SnakeCaseNamingStrategy, belongsTo, BelongsTo } from '@ioc:Adonis/Lucid/Orm';
|
||||
import User from './User';
|
||||
import { column, BaseModel, SnakeCaseNamingStrategy, belongsTo } from '@adonisjs/lucid/orm';
|
||||
import User from './User.js';
|
||||
import { DateTime } from 'luxon';
|
||||
import dayjs from 'dayjs';
|
||||
import Encryption from '@ioc:Adonis/Core/Encryption';
|
||||
// import Encryption from '@ioc:Adonis/Core/Encryption';
|
||||
import encryption from '@adonisjs/core/services/encryption';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
export default class TotpSecret extends BaseModel {
|
||||
public static namingStrategy = new SnakeCaseNamingStrategy();
|
||||
|
@ -21,16 +23,16 @@ export default class TotpSecret extends BaseModel {
|
|||
// public twoFactorSecret: string;
|
||||
@column({
|
||||
serializeAs: null,
|
||||
consume: (value: string) => (value ? JSON.parse(Encryption.decrypt(value) ?? '{}') : null),
|
||||
prepare: (value: string) => Encryption.encrypt(JSON.stringify(value)),
|
||||
consume: (value: string) => (value ? JSON.parse(encryption.decrypt(value) ?? '{}') : null),
|
||||
prepare: (value: string) => encryption.encrypt(JSON.stringify(value)),
|
||||
})
|
||||
public twoFactorSecret?: string | null;
|
||||
|
||||
// serializeAs: null removes the model properties from the serialized output.
|
||||
@column({
|
||||
serializeAs: null,
|
||||
consume: (value: string) => (value ? JSON.parse(Encryption.decrypt(value) ?? '[]') : []),
|
||||
prepare: (value: string[]) => Encryption.encrypt(JSON.stringify(value)),
|
||||
consume: (value: string) => (value ? JSON.parse(encryption.decrypt(value) ?? '[]') : []),
|
||||
prepare: (value: string[]) => encryption.encrypt(JSON.stringify(value)),
|
||||
})
|
||||
public twoFactorRecoveryCodes?: string[] | null;
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import Title from 'App/Models/Title';
|
||||
import Description from 'App/Models/Description';
|
||||
import License from 'App/Models/License';
|
||||
import Person from 'App/Models/Person';
|
||||
import DatasetReference from 'App/Models/DatasetReference';
|
||||
import DatasetIdentifier from 'App/Models/DatasetIdentifier';
|
||||
import Subject from 'App/Models/Subject';
|
||||
import File from 'App/Models/File';
|
||||
import Coverage from 'App/Models/Coverage';
|
||||
import Collection from 'App/Models/Collection';
|
||||
import { BaseModel as LucidBaseModel } from '@ioc:Adonis/Lucid/Orm';
|
||||
import Field from 'App/Library/Field';
|
||||
import Title from '#app/Models/Title';
|
||||
import Description from '#app/Models/Description';
|
||||
import License from '#app/Models/License';
|
||||
import Person from '#app/Models/Person';
|
||||
import DatasetReference from '#app/Models/DatasetReference';
|
||||
import DatasetIdentifier from '#app/Models/DatasetIdentifier';
|
||||
import Subject from '#app/Models/Subject';
|
||||
import File from '#app/Models/File';
|
||||
import Coverage from '#app/Models/Coverage';
|
||||
import Collection from '#app/Models/Collection';
|
||||
import { BaseModel as LucidBaseModel } from '@adonisjs/lucid/orm';
|
||||
import Field from '#app/Library/Field';
|
||||
import { DateTime } from 'luxon';
|
||||
|
||||
// @StaticImplements<LucidModel>()
|
||||
|
@ -31,11 +31,12 @@ export type DatasetRelatedModel =
|
|||
| typeof File;
|
||||
|
||||
export default abstract class DatasetExtension extends LucidBaseModel {
|
||||
public abstract id;
|
||||
public abstract id: number;
|
||||
public externalFields: Record<string, any> = this.getExternalFields();
|
||||
// which fields shoud#t be published
|
||||
protected internalFields: Record<string, any> = {};
|
||||
protected fields: Record<string, any> = {};
|
||||
[key: string]: any;
|
||||
|
||||
private getExternalFields(): Record<string, any> {
|
||||
// External fields definition
|
||||
|
|
|
@ -1,13 +1,25 @@
|
|||
import { DateTime } from 'luxon';
|
||||
import { column, beforeSave, manyToMany, ManyToMany, hasMany, HasMany } from '@ioc:Adonis/Lucid/Orm';
|
||||
import Hash from '@ioc:Adonis/Core/Hash';
|
||||
import Role from './Role';
|
||||
import Database from '@ioc:Adonis/Lucid/Database';
|
||||
import Config from '@ioc:Adonis/Core/Config';
|
||||
import Dataset from './Dataset';
|
||||
import BaseModel from './BaseModel';
|
||||
import Encryption from '@ioc:Adonis/Core/Encryption';
|
||||
import { TotpState } from 'Contracts/enums';
|
||||
import { withAuthFinder } from '@adonisjs/auth';
|
||||
import { column, beforeSave, manyToMany, hasMany } from '@adonisjs/lucid/orm';
|
||||
import hash from '@adonisjs/core/services/hash';
|
||||
import Role from './Role.js';
|
||||
import db from '@adonisjs/lucid/services/db';
|
||||
// import Config from '@ioc:Adonis/Core/Config';
|
||||
import config from '@adonisjs/core/services/config';
|
||||
import Dataset from './Dataset.js';
|
||||
import BaseModel from './BaseModel.js';
|
||||
// import Encryption from '@ioc:Adonis/Core/Encryption';
|
||||
import encryption from '@adonisjs/core/services/encryption';
|
||||
import { TotpState } from '#contracts/enums';
|
||||
import type { ManyToMany } from '@adonisjs/lucid/types/relations';
|
||||
import type { HasMany } from '@adonisjs/lucid/types/relations';
|
||||
import { compose } from '@adonisjs/core/helpers';
|
||||
|
||||
const AuthFinder = withAuthFinder(() => hash.use('laravel'), {
|
||||
uids: ['email'],
|
||||
passwordColumnName: 'password',
|
||||
});
|
||||
|
||||
// import TotpSecret from './TotpSecret';
|
||||
|
||||
// export default interface IUser {
|
||||
|
@ -20,13 +32,14 @@ import { TotpState } from 'Contracts/enums';
|
|||
// // async (user): Promise<void>;
|
||||
// }
|
||||
|
||||
const permissionTable = Config.get('rolePermission.permission_table', 'permissions');
|
||||
const rolePermissionTable = Config.get('rolePermission.role_permission_table', 'role_has_permissions');
|
||||
// const permissionTable = config.get('rolePermission.permission_table', 'permissions');
|
||||
// const rolePermissionTable = config.get('rolePermission.role_permission_table', 'role_has_permissions');
|
||||
|
||||
const roleTable = Config.get('rolePermission.role_table', 'roles');
|
||||
const userRoleTable = Config.get('rolePermission.user_role_table', 'link_accounts_roles');
|
||||
// const roleTable = config.get('rolePermission.role_table', 'roles');
|
||||
// const userRoleTable = config.get('rolePermission.user_role_table', 'link_accounts_roles');
|
||||
|
||||
export default class User extends BaseModel {
|
||||
export default class User extends compose(BaseModel, AuthFinder) {
|
||||
// export default class User extends BaseModel {
|
||||
public static table = 'accounts';
|
||||
|
||||
@column({ isPrimary: true })
|
||||
|
@ -50,16 +63,16 @@ export default class User extends BaseModel {
|
|||
// serializeAs: null removes the model properties from the serialized output.
|
||||
@column({
|
||||
serializeAs: null,
|
||||
consume: (value: string) => (value ? JSON.parse(Encryption.decrypt(value) ?? '{}') : null),
|
||||
prepare: (value: string) => Encryption.encrypt(JSON.stringify(value)),
|
||||
consume: (value: string) => (value ? JSON.parse(encryption.decrypt(value) ?? '{}') : null),
|
||||
prepare: (value: string) => encryption.encrypt(JSON.stringify(value)),
|
||||
})
|
||||
public twoFactorSecret?: string | null;
|
||||
|
||||
// serializeAs: null removes the model properties from the serialized output.
|
||||
@column({
|
||||
serializeAs: null,
|
||||
consume: (value: string) => (value ? JSON.parse(Encryption.decrypt(value) ?? '[]') : []),
|
||||
prepare: (value: string[]) => Encryption.encrypt(JSON.stringify(value)),
|
||||
consume: (value: string) => (value ? JSON.parse(encryption.decrypt(value) ?? '[]') : []),
|
||||
prepare: (value: string[]) => encryption.encrypt(JSON.stringify(value)),
|
||||
})
|
||||
public twoFactorRecoveryCodes?: string[] | null;
|
||||
|
||||
|
@ -72,14 +85,14 @@ export default class User extends BaseModel {
|
|||
// public totp_secret: HasOne<typeof TotpSecret>;
|
||||
|
||||
@beforeSave()
|
||||
public static async hashPassword(user) {
|
||||
public static async hashPassword(user: User) {
|
||||
if (user.$dirty.password) {
|
||||
user.password = await Hash.make(user.password);
|
||||
user.password = await hash.use('laravel').make(user.password);
|
||||
}
|
||||
}
|
||||
|
||||
public get isTwoFactorEnabled(): boolean {
|
||||
return Boolean(this?.twoFactorSecret && this.state == TotpState.STATE_ENABLED);
|
||||
return Boolean(this?.twoFactorSecret && this.state == TotpState.STATE_ENABLED);
|
||||
// return Boolean(this.totp_secret?.twoFactorSecret);
|
||||
}
|
||||
|
||||
|
@ -109,6 +122,12 @@ export default class User extends BaseModel {
|
|||
}
|
||||
|
||||
private async checkHasPermissions(user: User, permissionNames: Array<string>): Promise<boolean> {
|
||||
const permissionTable = config.get('rolePermission.permission_table', 'permissions');
|
||||
const rolePermissionTable = config.get('rolePermission.role_permission_table', 'role_has_permissions');
|
||||
|
||||
const roleTable = config.get('rolePermission.role_table', 'roles');
|
||||
const userRoleTable = config.get('rolePermission.user_role_table', 'link_accounts_roles');
|
||||
|
||||
let permissionPlaceHolder = '(';
|
||||
let placeholders = new Array(permissionNames.length).fill('?');
|
||||
permissionPlaceHolder += placeholders.join(',');
|
||||
|
@ -118,7 +137,7 @@ export default class User extends BaseModel {
|
|||
rows: {
|
||||
0: { permissioncount },
|
||||
},
|
||||
} = await Database.rawQuery(
|
||||
} = await db.rawQuery(
|
||||
'SELECT count("p"."name") as permissionCount FROM ' +
|
||||
roleTable +
|
||||
' r INNER JOIN ' +
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import { column, BaseModel, belongsTo, BelongsTo, SnakeCaseNamingStrategy } from '@ioc:Adonis/Lucid/Orm';
|
||||
import { column, BaseModel, belongsTo, SnakeCaseNamingStrategy } from '@adonisjs/lucid/orm';
|
||||
|
||||
import User from 'App/Models/User';
|
||||
import Role from 'App/Models/Role';
|
||||
import User from '#app/Models/User';
|
||||
import Role from '#app/Models/Role';
|
||||
import { DateTime } from 'luxon';
|
||||
import type { BelongsTo } from "@adonisjs/lucid/types/relations";
|
||||
|
||||
// import moment from 'moment'
|
||||
|
||||
export default class UserRole extends BaseModel {
|
||||
|
@ -49,7 +51,7 @@ export default class UserRole extends BaseModel {
|
|||
});
|
||||
}
|
||||
|
||||
private static formatDateTime(datetime) {
|
||||
private static formatDateTime(datetime: any) {
|
||||
let value = new Date(datetime);
|
||||
return datetime
|
||||
? value.getFullYear() +
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
import Database, {
|
||||
// DatabaseQueryBuilderContract,
|
||||
QueryClientContract,
|
||||
TransactionClientContract,
|
||||
} from '@ioc:Adonis/Lucid/Database';
|
||||
import Config from '@ioc:Adonis/Core/Config';
|
||||
// import db from '@adonisjs/lucid/services/db';
|
||||
// // import Config from '@ioc:Adonis/Core/Config';
|
||||
// import config from '@adonisjs/core/services/config';
|
||||
// import { QueryClientContract } from "@adonisjs/lucid/types/database";
|
||||
// import { TransactionClientContract } from "@adonisjs/lucid/types/database";
|
||||
|
||||
export function getUserRoles(userId: number, trx?: TransactionClientContract): Promise<Array<string>> {
|
||||
const { userRole } = Config.get('acl.joinTables');
|
||||
return ((trx || Database) as QueryClientContract | TransactionClientContract)
|
||||
.query()
|
||||
.from('roles')
|
||||
.distinct('roles.slug')
|
||||
.leftJoin(userRole, `${userRole}.role_id`, 'roles.id')
|
||||
.where(`${userRole}.user_id`, userId)
|
||||
.then((res) => {
|
||||
return res.map((r) => r.slug);
|
||||
});
|
||||
}
|
||||
// export function getUserRoles(userId: number, trx?: TransactionClientContract): Promise<Array<string>> {
|
||||
// const { userRole } = config.get('acl.joinTables');
|
||||
// return ((trx || db) as QueryClientContract | TransactionClientContract)
|
||||
// .query()
|
||||
// .from('roles')
|
||||
// .distinct('roles.slug')
|
||||
// .leftJoin(userRole, `${userRole}.role_id`, 'roles.id')
|
||||
// .where(`${userRole}.user_id`, userId)
|
||||
// .then((res) => {
|
||||
// return res.map((r) => r.slug);
|
||||
// });
|
||||
// }
|
||||
|
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue