feat: add files server as a service to home-server (#614)

* wip: add files server as a service to home-server

* wip: introduce home-server controllers without inversify-express-utils decorators. Move in progress

* fix(auth): move remaining home server controllers

* fix(syncing-server): home server controllers

* fix(revisions): home server controllers

* fix: specs

* fix: import for legacy controller

* fix: remove router debug
This commit is contained in:
Karol Sójko
2023-05-29 14:45:49 +02:00
committed by GitHub
parent a575e62519
commit c7d575a0ff
95 changed files with 2463 additions and 1898 deletions
@@ -1,6 +1,5 @@
import { Request, Response } from 'express'
import {
BaseHttpController,
controller,
httpDelete,
httpGet,
@@ -10,78 +9,39 @@ import {
} from 'inversify-express-utils'
import TYPES from '../../Bootstrap/Types'
import { AuthenticatorsController } from '../../Controller/AuthenticatorsController'
import { ControllerContainerInterface } from '@standardnotes/domain-core'
import { inject } from 'inversify'
import { HomeServerAuthenticatorsController } from './HomeServer/HomeServerAuthenticatorsController'
@controller('/authenticators')
export class InversifyExpressAuthenticatorsController extends BaseHttpController {
export class InversifyExpressAuthenticatorsController extends HomeServerAuthenticatorsController {
constructor(
@inject(TYPES.Auth_AuthenticatorsController) private authenticatorsController: AuthenticatorsController,
@inject(TYPES.Auth_ControllerContainer) private controllerContainer: ControllerContainerInterface,
@inject(TYPES.Auth_AuthenticatorsController) override authenticatorsController: AuthenticatorsController,
) {
super()
this.controllerContainer.register('auth.authenticators.list', this.list.bind(this))
this.controllerContainer.register('auth.authenticators.delete', this.delete.bind(this))
this.controllerContainer.register(
'auth.authenticators.generateRegistrationOptions',
this.generateRegistrationOptions.bind(this),
)
this.controllerContainer.register(
'auth.authenticators.verifyRegistrationResponse',
this.verifyRegistration.bind(this),
)
this.controllerContainer.register(
'auth.authenticators.generateAuthenticationOptions',
this.generateAuthenticationOptions.bind(this),
)
super(authenticatorsController)
}
@httpGet('/', TYPES.Auth_RequiredCrossServiceTokenMiddleware)
async list(_request: Request, response: Response): Promise<results.JsonResult> {
const result = await this.authenticatorsController.list({
userUuid: response.locals.user.uuid,
})
return this.json(result.data, result.status)
override async list(_request: Request, response: Response): Promise<results.JsonResult> {
return super.list(_request, response)
}
@httpDelete('/:authenticatorId', TYPES.Auth_RequiredCrossServiceTokenMiddleware)
async delete(request: Request, response: Response): Promise<results.JsonResult> {
const result = await this.authenticatorsController.delete({
userUuid: response.locals.user.uuid,
authenticatorId: request.params.authenticatorId,
})
return this.json(result.data, result.status)
override async delete(request: Request, response: Response): Promise<results.JsonResult> {
return super.delete(request, response)
}
@httpGet('/generate-registration-options', TYPES.Auth_RequiredCrossServiceTokenMiddleware)
async generateRegistrationOptions(_request: Request, response: Response): Promise<results.JsonResult> {
const result = await this.authenticatorsController.generateRegistrationOptions({
username: response.locals.user.email,
userUuid: response.locals.user.uuid,
})
return this.json(result.data, result.status)
override async generateRegistrationOptions(_request: Request, response: Response): Promise<results.JsonResult> {
return super.generateRegistrationOptions(_request, response)
}
@httpPost('/verify-registration', TYPES.Auth_RequiredCrossServiceTokenMiddleware)
async verifyRegistration(request: Request, response: Response): Promise<results.JsonResult> {
const result = await this.authenticatorsController.verifyRegistrationResponse({
userUuid: response.locals.user.uuid,
attestationResponse: request.body.attestationResponse,
})
return this.json(result.data, result.status)
override async verifyRegistration(request: Request, response: Response): Promise<results.JsonResult> {
return super.verifyRegistration(request, response)
}
@httpPost('/generate-authentication-options')
async generateAuthenticationOptions(request: Request): Promise<results.JsonResult> {
const result = await this.authenticatorsController.generateAuthenticationOptions({
username: request.body.username,
})
return this.json(result.data, result.status)
override async generateAuthenticationOptions(request: Request): Promise<results.JsonResult> {
return super.generateAuthenticationOptions(request)
}
}