auth.page.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // auth.page.ts
  2. import { Component } from '@angular/core';
  3. import { Router } from '@angular/router';
  4. import { AlertController, LoadingController } from '@ionic/angular';
  5. import { UserService } from '../services/user.service';
  6. @Component({
  7. selector: 'app-auth',
  8. templateUrl: './auth.page.html',
  9. styleUrls: ['./auth.page.scss'],
  10. })
  11. export class AuthPage {
  12. segmentValue = 'login';
  13. loginData = { username: '', password: '' };
  14. registerData = { username: '', password: '', confirmPassword: '' };
  15. constructor(
  16. private userService: UserService,
  17. private router: Router,
  18. private alertCtrl: AlertController,
  19. private loadingCtrl: LoadingController
  20. ) {}
  21. async onLogin() {
  22. if (!this.loginData.username || !this.loginData.password) {
  23. this.showAlert('错误', '请输入用户名和密码');
  24. return;
  25. }
  26. const loading = await this.loadingCtrl.create({
  27. message: '登录中...'
  28. });
  29. await loading.present();
  30. try {
  31. const isLoggedIn = await this.userService.login(
  32. this.loginData.username,
  33. this.loginData.password
  34. );
  35. if (isLoggedIn) {
  36. this.router.navigate(['/tabs/tab1']);
  37. } else {
  38. this.showAlert('登录失败', '用户名或密码错误');
  39. }
  40. } finally {
  41. loading.dismiss();
  42. }
  43. }
  44. async onRegister() {
  45. if (!this.registerData.username || !this.registerData.password) {
  46. this.showAlert('错误', '请输入用户名和密码');
  47. return;
  48. }
  49. if (this.registerData.password !== this.registerData.confirmPassword) {
  50. this.showAlert('错误', '两次输入的密码不一致');
  51. return;
  52. }
  53. const loading = await this.loadingCtrl.create({
  54. message: '注册中...'
  55. });
  56. await loading.present();
  57. try {
  58. const isRegistered = await this.userService.register(
  59. this.registerData.username,
  60. this.registerData.password
  61. );
  62. if (isRegistered) {
  63. this.showAlert('注册成功', '您现在可以登录了');
  64. this.segmentValue = 'login';
  65. this.loginData.username = this.registerData.username;
  66. this.registerData = { username: '', password: '', confirmPassword: '' };
  67. } else {
  68. this.showAlert('注册失败', '用户名已存在');
  69. }
  70. } finally {
  71. loading.dismiss();
  72. }
  73. }
  74. private async showAlert(header: string, message: string) {
  75. const alert = await this.alertCtrl.create({
  76. header,
  77. message,
  78. buttons: ['确定']
  79. });
  80. await alert.present();
  81. }
  82. }