feat(web,server): disable password login (#1223)

* feat(web,server): disable password login

* chore: unit tests

* chore: fix import

* chore: linting

* feat(cli): server command for enable/disable password login

* chore: update docs

* feat(web): confirm dialogue

* chore: linting

* chore: linting

* chore: linting

* chore: linting

* chore: linting

* chore: fix web test

* chore: server unit tests
This commit is contained in:
Jason Rasmussen 2023-01-09 16:32:58 -05:00 committed by GitHub
parent 5999af6c78
commit bd838a71d1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
66 changed files with 861 additions and 167 deletions

View file

@ -1,10 +1,16 @@
import { DatabaseModule, UserEntity } from '@app/database';
import { DatabaseModule, SystemConfigEntity, UserEntity } from '@app/database';
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DisablePasswordLoginCommand, EnablePasswordLoginCommand } from './commands/password-login';
import { PromptPasswordQuestions, ResetAdminPasswordCommand } from './commands/reset-admin-password.command';
@Module({
imports: [DatabaseModule, TypeOrmModule.forFeature([UserEntity])],
providers: [ResetAdminPasswordCommand, PromptPasswordQuestions],
imports: [DatabaseModule, TypeOrmModule.forFeature([UserEntity, SystemConfigEntity])],
providers: [
ResetAdminPasswordCommand,
PromptPasswordQuestions,
EnablePasswordLoginCommand,
DisablePasswordLoginCommand,
],
})
export class AppModule {}

View file

@ -0,0 +1,39 @@
import { SystemConfigEntity, SystemConfigKey } from '@app/database';
import { InjectRepository } from '@nestjs/typeorm';
import axios from 'axios';
import { Command, CommandRunner } from 'nest-commander';
import { Repository } from 'typeorm';
@Command({
name: 'enable-password-login',
description: 'Enable password login',
})
export class EnablePasswordLoginCommand extends CommandRunner {
constructor(
@InjectRepository(SystemConfigEntity) private repository: Repository<SystemConfigEntity>, //
) {
super();
}
async run(): Promise<void> {
await this.repository.delete({ key: SystemConfigKey.PASSWORD_LOGIN_ENABLED });
await axios.post('http://localhost:3001/refresh-config');
console.log('Password login has been enabled.');
}
}
@Command({
name: 'disable-password-login',
description: 'Disable password login',
})
export class DisablePasswordLoginCommand extends CommandRunner {
constructor(@InjectRepository(SystemConfigEntity) private repository: Repository<SystemConfigEntity>) {
super();
}
async run(): Promise<void> {
await this.repository.save({ key: SystemConfigKey.PASSWORD_LOGIN_ENABLED, value: false });
await axios.post('http://localhost:3001/refresh-config');
console.log('Password login has been disabled.');
}
}