Как я могу проверить, если письмо от администратора, и перенаправить его в специальное окно - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу, чтобы при входе в почту определенное окно c перенаправляло его, а когда оно было обычным пользователем, другому. Как мне это сделать? Поскольку во время проверки это всегда тянет меня к одному и тому же вопросу, являюсь ли я администратором или нет.

Я работаю, используя Angular, Ioni c и в качестве базы данных FireBase

Это HTML

    <ion-content padding class="form-content">
    <form class="form" [formGroup]="validations_form" (ngSubmit)="tryLogin(validations_form.value)">
    <ion-item>
      <ion-label position="floating" color="primary">Email</ion-label>
      <ion-input type="text" formControlName="email"></ion-input>
    </ion-item>
    <div class="validation-errors">
      <ng-container *ngFor="let validation of validation_messages.email">
        <div class="error-message" *ngIf="validations_form.get('email').hasError(validation.type) && (validations_form.get('email').dirty || validations_form.get('email').touched)">
          {{ validation.message }}
        </div>
      </ng-container>
    </div>
    <ion-item>
      <ion-label position="floating" color="primary">Password</ion-label>
      <ion-input type="password" formControlName="password"></ion-input>
    </ion-item>
    <div class="validation-errors">
      <ng-container *ngFor="let validation of validation_messages.password">
        <div class="error-message" *ngIf="validations_form.get('password').hasError(validation.type) && (validations_form.get('password').dirty || validations_form.get('password').touched)">
          {{ validation.message }}
        </div>
      </ng-container>
    </div>
    <ion-button class="submit-btn" expand="block" type="submit" [disabled]="!validations_form.valid">Log In</ion-button>
    <label class="error-message">{{errorMessage}}</label>
  </form>
<p class="go-to-register">
No account yet? <a (click)="goRegisterPage()">Create an account.</a>
  </p>
</ion-content>

Это TS

    export class LoginPage implements OnInit {
    validations_form: FormGroup;
     errorMessage: string = '';

  validation_messages = {
   'email': [
     { type: 'required', message: 'Email is required.' },
     { type: 'pattern', message: 'Please enter a valid email.' }
   ],
   'password': [
     { type: 'required', message: 'Password is required.' },
     { type: 'minlength', message: 'Password must be at least 5 characters long.' }
   ]
 };

  constructor(
    private authService: AuthService,
    private formBuilder: FormBuilder,
    private router: Router
  ) { }
  ngOnInit() {
    this.validations_form = this.formBuilder.group({
      email: new FormControl('', Validators.compose([
        Validators.required,
        Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$')
      ])),
      password: new FormControl('', Validators.compose([
        Validators.minLength(5),
        Validators.required
      ])),
    });
  }
  tryLogin(value){
    this.authService.doLogin(value)
    .then(res => {
      this.router.navigate(["/home"]);
    }, err => {
      this.errorMessage = err.message;
      console.log(err)
    })
  }
  goRegisterPage(){
    this.router.navigate(["/register"]);
  }
}

Любая помощь, я буду очень признателен

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете создать охранника, который при активации возвращает правильное место назначения. Таким образом, вы всегда отправляете зарегистрированного пользователя на общий маршрут, но защита от перенаправления активирует его при необходимости. Пример конфигурации маршрутизации:

const routes: Routes = [
  {
    path: '/common-users-route',
    component: CommonUsersComponent,
    canActivate: [CommonUsersRouteGuard]
  },
  {
    path: '/administrator-route',
    component: AdministratorComponent,
    canActivate: [AdministratorRouteGuard]
  },
]

CommonUsersRouteGuard:

constructor(private _router: Router, private _userService: UserService) {}

canActivate(
  route: ActivatedRouteSnapshot,
  state: RouterStateSnapshot
): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | UrlTree | boolean {

  if(this._userService.isAdministrator()) {
    return this._router.parseUrl('/administrator-route');
  }

  return true;
}

AdministratorRouteGuard:

constructor(private _router: Router, private _userService: UserService) {}

canActivate(
  route: ActivatedRouteSnapshot,
  state: RouterStateSnapshot
): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | UrlTree | boolean {

  if(this._userService.isAdministrator()) {
    return true;
  }

  return this._router.parseUrl('/common-users-route');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...