mirror of
https://github.com/standardnotes/server
synced 2026-10-13 09:13:11 -04:00
chore: add clear login attempts admin endpoint
This commit is contained in:
@@ -1964,6 +1964,7 @@ export class ContainerConfigLoader {
|
||||
container.get<UserRepositoryInterface>(TYPES.Auth_UserRepository),
|
||||
container.get<CreateSubscriptionToken>(TYPES.Auth_CreateSubscriptionToken),
|
||||
container.get<CreateOfflineSubscriptionToken>(TYPES.Auth_CreateOfflineSubscriptionToken),
|
||||
container.get<ClearLoginAttempts>(TYPES.Auth_ClearLoginAttempts),
|
||||
container.get<ControllerContainerInterface>(TYPES.Auth_ControllerContainer),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -12,6 +12,7 @@ import TYPES from '../../Bootstrap/Types'
|
||||
import { BaseAdminController } from './Base/BaseAdminController'
|
||||
import { CreateOfflineSubscriptionToken } from '../../Domain/UseCase/CreateOfflineSubscriptionToken/CreateOfflineSubscriptionToken'
|
||||
import { CreateSubscriptionToken } from '../../Domain/UseCase/CreateSubscriptionToken/CreateSubscriptionToken'
|
||||
import { ClearLoginAttempts } from '../../Domain/UseCase/ClearLoginAttempts'
|
||||
import { DeleteSetting } from '../../Domain/UseCase/DeleteSetting/DeleteSetting'
|
||||
import { GetSetting } from './../../Domain/UseCase/GetSetting/GetSetting'
|
||||
import { UserRepositoryInterface } from '../../Domain/User/UserRepositoryInterface'
|
||||
@@ -25,8 +26,16 @@ export class AnnotatedAdminController extends BaseAdminController {
|
||||
@inject(TYPES.Auth_CreateSubscriptionToken) override createSubscriptionToken: CreateSubscriptionToken,
|
||||
@inject(TYPES.Auth_CreateOfflineSubscriptionToken)
|
||||
override createOfflineSubscriptionToken: CreateOfflineSubscriptionToken,
|
||||
@inject(TYPES.Auth_ClearLoginAttempts) override clearLoginAttempts: ClearLoginAttempts,
|
||||
) {
|
||||
super(doDeleteSetting, doGetSetting, userRepository, createSubscriptionToken, createOfflineSubscriptionToken)
|
||||
super(
|
||||
doDeleteSetting,
|
||||
doGetSetting,
|
||||
userRepository,
|
||||
createSubscriptionToken,
|
||||
createOfflineSubscriptionToken,
|
||||
clearLoginAttempts,
|
||||
)
|
||||
}
|
||||
|
||||
@httpGet('/user/:email')
|
||||
@@ -60,4 +69,11 @@ export class AnnotatedAdminController extends BaseAdminController {
|
||||
): Promise<results.BadRequestErrorMessageResult | results.OkResult> {
|
||||
return super.disableEmailBackups(request)
|
||||
}
|
||||
|
||||
@httpDelete('/users/:email/login-attempts')
|
||||
override async deleteLoginAttempts(
|
||||
request: Request,
|
||||
): Promise<results.JsonResult | results.OkResult> {
|
||||
return super.deleteLoginAttempts(request)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import { Request } from 'express'
|
||||
|
||||
import { CreateOfflineSubscriptionToken } from '../../../Domain/UseCase/CreateOfflineSubscriptionToken/CreateOfflineSubscriptionToken'
|
||||
import { CreateSubscriptionToken } from '../../../Domain/UseCase/CreateSubscriptionToken/CreateSubscriptionToken'
|
||||
import { ClearLoginAttempts } from '../../../Domain/UseCase/ClearLoginAttempts'
|
||||
import { GetSetting } from './../../../Domain/UseCase/GetSetting/GetSetting'
|
||||
import { DeleteSetting } from '../../../Domain/UseCase/DeleteSetting/DeleteSetting'
|
||||
import { UserRepositoryInterface } from '../../../Domain/User/UserRepositoryInterface'
|
||||
@@ -16,6 +17,7 @@ export class BaseAdminController extends BaseHttpController {
|
||||
protected userRepository: UserRepositoryInterface,
|
||||
protected createSubscriptionToken: CreateSubscriptionToken,
|
||||
protected createOfflineSubscriptionToken: CreateOfflineSubscriptionToken,
|
||||
protected clearLoginAttempts: ClearLoginAttempts,
|
||||
private controllerContainer?: ControllerContainerInterface,
|
||||
) {
|
||||
super()
|
||||
@@ -26,6 +28,7 @@ export class BaseAdminController extends BaseHttpController {
|
||||
this.controllerContainer.register('admin.createToken', this.createToken.bind(this))
|
||||
this.controllerContainer.register('admin.createOfflineToken', this.createOfflineToken.bind(this))
|
||||
this.controllerContainer.register('admin.disableEmailBackups', this.disableEmailBackups.bind(this))
|
||||
this.controllerContainer.register('admin.deleteLoginAttempts', this.deleteLoginAttempts.bind(this))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,4 +148,34 @@ export class BaseAdminController extends BaseHttpController {
|
||||
|
||||
return this.badRequest('No email backups found')
|
||||
}
|
||||
|
||||
async deleteLoginAttempts(request: Request): Promise<results.JsonResult | results.OkResult> {
|
||||
const { email } = request.params
|
||||
|
||||
if (!email) {
|
||||
return this.json(
|
||||
{
|
||||
error: {
|
||||
message: 'Missing email parameter.',
|
||||
},
|
||||
},
|
||||
400,
|
||||
)
|
||||
}
|
||||
|
||||
const result = await this.clearLoginAttempts.execute({ email })
|
||||
|
||||
if (result.isFailed()) {
|
||||
return this.json(
|
||||
{
|
||||
error: {
|
||||
message: result.getError(),
|
||||
},
|
||||
},
|
||||
400,
|
||||
)
|
||||
}
|
||||
|
||||
return this.ok()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user