Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Замечания к коду #1

Open
Wizp opened this issue Jun 15, 2021 · 0 comments
Open

Замечания к коду #1

Wizp opened this issue Jun 15, 2021 · 0 comments

Comments

@Wizp
Copy link

Wizp commented Jun 15, 2021

Смешаны контроллеры. В основном модуле приложения добавлены роуты авторизации и получения профиля пользователя. Им место в модулях авторизации и пользователя соответственно.

Миграций для базы нет, все создается через sync.

  @Column({
    type: DataType.STRING,
    unique: true,
    allowNull: true,
  })
  email: string;

  @Column({
    type: DataType.STRING,
    unique: true,
    allowNull: false,
  })
  phone: string;

При попытке зарегестрировать пользователя, с помощью emai, валидатор сгенерирует исключение, поскольку номер телефона не может быть пустым.

export class UserDto {
  id: number;
  name: string;
  @IsEmail()
  email: string;
  @IsMobilePhone('ru-RU')
  @IsOptional()
  phone: string;
  password: string;
  gender: string;
}

Пользователь должен указать все это, включая id. Для регистрации должно хватать двух полей. email и password, phone, password.

Валидации входящих данных нет, декораторов для формирования параметров запросов для сваггера нет.
Валидация (ValidationPipe) нигде по коду не используется.

    findOptions.where = {};
    await Promise.all(
      Object.keys(searchObject).map((searchKey) => {
        findOptions.where[searchKey] = {
          [Op.like]: `%${searchObject[searchKey]}%`,
        };
      }),
    );
    return await this.userRepository.findAll(findOptions);

Синхронный код обернут промисами, зачем?
В результате вызова не вернется общее количество записей в таблице. Как сделать пагинацию, если отсутсвует общее количество?

Авторизация не проверяется в модуле user, менять и удалять может любой пользователь, любого другого.

  @UseGuards(AuthGuard('local'))
  @Post('login')
  async login(@Request() req) {
    return await this.authService.login(req.user);
  }

  @UseGuards(LocalAuthGuard)
  @Post('auth/login')
  async login(@Request() req) {
    return this.authService.login(req.user);
  }

А как пользователи залогинятся, если им уже требуется быть залогинеными?
К тому же два одинаковых роута, будет конфликт.

Можно созвонится или встретится, я расскажу подробно, что нужно поправить и как

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant