58 lines
No EOL
1.3 KiB
JavaScript
58 lines
No EOL
1.3 KiB
JavaScript
|
|
import {
|
|
JsonDB,
|
|
Config
|
|
} from 'node-json-db';
|
|
|
|
import {
|
|
default as ValidateSchema
|
|
} from 'validate'
|
|
|
|
import {
|
|
randomBytes
|
|
} from "crypto";
|
|
|
|
|
|
var authorityDB = new JsonDB(new Config("datastore/database/authorityDB.json", true, true, '/'));
|
|
|
|
const authoritySchema = new ValidateSchema({
|
|
name: {
|
|
type: String,
|
|
required: true,
|
|
match: /^[a-zA-Z0-9\ \-\_]+$/,
|
|
length: { min: 3, max: 32 },
|
|
message: 'invalid name'
|
|
}
|
|
})
|
|
|
|
export async function saveAuthority(authorityID, authorityConfig) {
|
|
let configErrorList = authoritySchema.validate(authorityConfig);
|
|
|
|
configErrorList = configErrorList.map((configError) => {
|
|
return configError.message;
|
|
})
|
|
|
|
if (configErrorList.length > 0) {
|
|
return {
|
|
status: "error",
|
|
errors: configErrorList
|
|
}
|
|
}
|
|
|
|
await authorityDB.push(`/${authorityID}`, authorityConfig);
|
|
|
|
return {
|
|
status: "ok"
|
|
}
|
|
}
|
|
|
|
export async function getAuthority(authorityID) {
|
|
let AuthorityData = await authorityDB.getData(`/${authorityID}`);
|
|
return AuthorityData;
|
|
}
|
|
|
|
export async function deleteAuthority(authorityID) {
|
|
await authorityDB.delete(`/${authorityID}`);
|
|
}
|
|
|
|
saveAuthority(randomBytes(4).toString("hex"), {names: "{test}"}) |