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 hashedProperties() { return ["etapiTokenId", "name", "tokenHash", "utcDateCreated", "utcDateModified", "isDeleted"]; }
etapiTokenId!: string;
etapiTokenId?: string;
name!: string;
tokenHash!: string;
private _isDeleted!: boolean;
private _isDeleted?: boolean;
constructor(row: EtapiTokenRow) {
super();
@ -36,7 +36,7 @@ class BEtapiToken extends AbstractBeccaEntity<BEtapiToken> {
}
get isDeleted() {
return this._isDeleted;
return !!this._isDeleted;
}
updateFromRow(row: EtapiTokenRow) {
@ -74,7 +74,9 @@ class BEtapiToken extends AbstractBeccaEntity<BEtapiToken> {
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 {
etapiTokenId: string;
etapiTokenId?: string;
name: string;
tokenHash: string;
utcDateCreated?: string;
utcDateModified?: string;
isDeleted: boolean;
isDeleted?: boolean;
}
export interface BlobRow {

View File

@ -1,7 +1,7 @@
const becca = require('../becca/becca');
const eu = require('./etapi_utils');
const passwordEncryptionService = require('../services/encryption/password_encryption');
const etapiTokenService = require('../services/etapi_tokens.js');
const etapiTokenService = require('../services/etapi_tokens');
function register(router, loginMiddleware) {
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 log = require('../services/log');
const becca = require('../becca/becca');
const etapiTokenService = require('../services/etapi_tokens.js');
const etapiTokenService = require('../services/etapi_tokens');
const config = require('../services/config');
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() {
const tokens = etapiTokenService.getTokens();

View File

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

View File

@ -56,7 +56,7 @@ const keysRoute = require('./api/keys.js');
const backendLogRoute = require('./api/backend_log.js');
const statsRoute = require('./api/stats.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 otherRoute = require('./api/other.js');
const shareRoutes = require('../share/routes.js');

View File

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

View File

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