server-ts: Port etapi_tokens service

This commit is contained in:
Elian Doran 2024-02-17 19:55:40 +02:00
parent 56ca0ea5d0
commit 1b58dbe401
No known key found for this signature in database
9 changed files with 25 additions and 23 deletions

View File

@ -19,10 +19,10 @@ class BEtapiToken extends AbstractBeccaEntity<BEtapiToken> {
static get primaryKeyName() { return "etapiTokenId"; } static get primaryKeyName() { return "etapiTokenId"; }
static get hashedProperties() { return ["etapiTokenId", "name", "tokenHash", "utcDateCreated", "utcDateModified", "isDeleted"]; } static get hashedProperties() { return ["etapiTokenId", "name", "tokenHash", "utcDateCreated", "utcDateModified", "isDeleted"]; }
etapiTokenId!: string; etapiTokenId?: string;
name!: string; name!: string;
tokenHash!: string; tokenHash!: string;
private _isDeleted!: boolean; private _isDeleted?: boolean;
constructor(row: EtapiTokenRow) { constructor(row: EtapiTokenRow) {
super(); super();
@ -36,7 +36,7 @@ class BEtapiToken extends AbstractBeccaEntity<BEtapiToken> {
} }
get isDeleted() { get isDeleted() {
return this._isDeleted; return !!this._isDeleted;
} }
updateFromRow(row: EtapiTokenRow) { updateFromRow(row: EtapiTokenRow) {
@ -74,7 +74,9 @@ class BEtapiToken extends AbstractBeccaEntity<BEtapiToken> {
super.beforeSaving(); super.beforeSaving();
this.becca.etapiTokens[this.etapiTokenId] = this; if (this.etapiTokenId) {
this.becca.etapiTokens[this.etapiTokenId] = this;
}
} }
} }

View File

@ -46,12 +46,12 @@ export interface OptionRow {
} }
export interface EtapiTokenRow { export interface EtapiTokenRow {
etapiTokenId: string; etapiTokenId?: string;
name: string; name: string;
tokenHash: string; tokenHash: string;
utcDateCreated?: string; utcDateCreated?: string;
utcDateModified?: string; utcDateModified?: string;
isDeleted: boolean; isDeleted?: boolean;
} }
export interface BlobRow { export interface BlobRow {

View File

@ -1,7 +1,7 @@
const becca = require('../becca/becca'); const becca = require('../becca/becca');
const eu = require('./etapi_utils'); const eu = require('./etapi_utils');
const passwordEncryptionService = require('../services/encryption/password_encryption'); const passwordEncryptionService = require('../services/encryption/password_encryption');
const etapiTokenService = require('../services/etapi_tokens.js'); const etapiTokenService = require('../services/etapi_tokens');
function register(router, loginMiddleware) { function register(router, loginMiddleware) {
eu.NOT_AUTHENTICATED_ROUTE(router, 'post', '/etapi/auth/login', loginMiddleware, (req, res, next) => { eu.NOT_AUTHENTICATED_ROUTE(router, 'post', '/etapi/auth/login', loginMiddleware, (req, res, next) => {

View File

@ -2,7 +2,7 @@ const cls = require('../services/cls');
const sql = require('../services/sql'); const sql = require('../services/sql');
const log = require('../services/log'); const log = require('../services/log');
const becca = require('../becca/becca'); const becca = require('../becca/becca');
const etapiTokenService = require('../services/etapi_tokens.js'); const etapiTokenService = require('../services/etapi_tokens');
const config = require('../services/config'); const config = require('../services/config');
const GENERIC_CODE = "GENERIC"; const GENERIC_CODE = "GENERIC";

View File

@ -1,4 +1,4 @@
const etapiTokenService = require('../../services/etapi_tokens.js'); const etapiTokenService = require('../../services/etapi_tokens');
function getTokens() { function getTokens() {
const tokens = etapiTokenService.getTokens(); const tokens = etapiTokenService.getTokens();

View File

@ -11,7 +11,7 @@ const eventService = require('../../services/events');
const sqlInit = require('../../services/sql_init'); const sqlInit = require('../../services/sql_init');
const sql = require('../../services/sql'); const sql = require('../../services/sql');
const ws = require('../../services/ws'); const ws = require('../../services/ws');
const etapiTokenService = require('../../services/etapi_tokens.js'); const etapiTokenService = require('../../services/etapi_tokens');
function loginSync(req) { function loginSync(req) {
if (!sqlInit.schemaExists()) { if (!sqlInit.schemaExists()) {

View File

@ -56,7 +56,7 @@ const keysRoute = require('./api/keys.js');
const backendLogRoute = require('./api/backend_log.js'); const backendLogRoute = require('./api/backend_log.js');
const statsRoute = require('./api/stats.js'); const statsRoute = require('./api/stats.js');
const fontsRoute = require('./api/fonts.js'); const fontsRoute = require('./api/fonts.js');
const etapiTokensApiRoutes = require('./api/etapi_tokens.js'); const etapiTokensApiRoutes = require('./api/etapi_tokens');
const relationMapApiRoute = require('./api/relation-map'); const relationMapApiRoute = require('./api/relation-map');
const otherRoute = require('./api/other.js'); const otherRoute = require('./api/other.js');
const shareRoutes = require('../share/routes.js'); const shareRoutes = require('../share/routes.js');

View File

@ -1,6 +1,6 @@
"use strict"; "use strict";
const etapiTokenService = require('./etapi_tokens.js'); const etapiTokenService = require('./etapi_tokens');
const log = require('./log'); const log = require('./log');
const sqlInit = require('./sql_init'); const sqlInit = require('./sql_init');
const utils = require('./utils'); const utils = require('./utils');

View File

@ -1,17 +1,17 @@
const becca = require('../becca/becca'); import becca = require('../becca/becca');
const utils = require('./utils'); import utils = require('./utils');
const BEtapiToken = require('../becca/entities/betapi_token'); import BEtapiToken = require('../becca/entities/betapi_token');
const crypto = require("crypto"); import crypto = require("crypto");
function getTokens() { function getTokens() {
return becca.getEtapiTokens(); return becca.getEtapiTokens();
} }
function getTokenHash(token) { function getTokenHash(token: crypto.BinaryLike) {
return crypto.createHash('sha256').update(token).digest('base64'); return crypto.createHash('sha256').update(token).digest('base64');
} }
function createToken(tokenName) { function createToken(tokenName: string) {
const token = utils.randomSecureToken(32); const token = utils.randomSecureToken(32);
const tokenHash = getTokenHash(token); const tokenHash = getTokenHash(token);
@ -25,7 +25,7 @@ function createToken(tokenName) {
}; };
} }
function parseAuthToken(auth) { function parseAuthToken(auth: string) {
if (!auth) { if (!auth) {
return null; return null;
} }
@ -64,7 +64,7 @@ function parseAuthToken(auth) {
} }
} }
function isValidAuthHeader(auth) { function isValidAuthHeader(auth: string) {
const parsed = parseAuthToken(auth); const parsed = parseAuthToken(auth);
if (!parsed) { if (!parsed) {
@ -93,7 +93,7 @@ function isValidAuthHeader(auth) {
} }
} }
function renameToken(etapiTokenId, newName) { function renameToken(etapiTokenId: string, newName: string) {
const etapiToken = becca.getEtapiToken(etapiTokenId); const etapiToken = becca.getEtapiToken(etapiTokenId);
if (!etapiToken) { if (!etapiToken) {
@ -104,7 +104,7 @@ function renameToken(etapiTokenId, newName) {
etapiToken.save(); etapiToken.save();
} }
function deleteToken(etapiTokenId) { function deleteToken(etapiTokenId: string) {
const etapiToken = becca.getEtapiToken(etapiTokenId); const etapiToken = becca.getEtapiToken(etapiTokenId);
if (!etapiToken) { if (!etapiToken) {
@ -114,7 +114,7 @@ function deleteToken(etapiTokenId) {
etapiToken.markAsDeletedSimple(); etapiToken.markAsDeletedSimple();
} }
module.exports = { export = {
getTokens, getTokens,
createToken, createToken,
renameToken, renameToken,