administrator.service.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { Injectable } from '@nestjs/common';
  2. import { InjectConnection } from '@nestjs/typeorm';
  3. import { Connection } from 'typeorm';
  4. import { PasswordService } from '../auth/password.service';
  5. import { Role } from '../auth/role';
  6. import { CreateAdministratorDto } from '../entity/administrator/administrator.dto';
  7. import { Administrator } from '../entity/administrator/administrator.entity';
  8. import { User } from '../entity/user/user.entity';
  9. @Injectable()
  10. export class AdministratorService {
  11. constructor(@InjectConnection() private connection: Connection, private passwordService: PasswordService) {}
  12. findAll(): Promise<Administrator[]> {
  13. return this.connection.manager.find(Administrator);
  14. }
  15. findOne(administratorId: number): Promise<Administrator | undefined> {
  16. return this.connection.manager.findOne(Administrator, administratorId);
  17. }
  18. async create(createAdministratorDto: CreateAdministratorDto): Promise<Administrator> {
  19. const administrator = new Administrator(createAdministratorDto);
  20. const user = new User();
  21. user.passwordHash = await this.passwordService.hash(createAdministratorDto.password);
  22. user.identifier = createAdministratorDto.emailAddress;
  23. user.roles = [Role.Superadmin];
  24. const createdUser = await this.connection.getRepository(User).save(user);
  25. administrator.user = createdUser;
  26. return this.connection.getRepository(Administrator).save(administrator);
  27. }
  28. }