login.page.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import { Component, OnInit } from '@angular/core';
  2. import { AlertController, NavController } from '@ionic/angular';
  3. import * as Parse from 'parse';
  4. @Component({
  5. selector: 'app-login',
  6. templateUrl: './login.page.html',
  7. styleUrls: ['./login.page.scss'],
  8. })
  9. export class LoginPage implements OnInit {
  10. username: string = "";
  11. password: string = "";
  12. constructor(
  13. private navCtrl: NavController,
  14. private alertController: AlertController
  15. ) { }
  16. ngOnInit() { }
  17. async login() {
  18. let user;
  19. try {
  20. user = await Parse.User.logIn(this.username, this.password);
  21. // 登录成功后立即加载用户数据
  22. this.loadUserData();
  23. } catch (error: any) {
  24. let message: string = "";
  25. if (error?.message.indexOf("is required") > -1) {
  26. message = "必须输入账号或邮箱";
  27. }
  28. if (error?.message.indexOf("Invalid username") > -1) {
  29. message = "账号或密码错误,请检查";
  30. }
  31. this.presentAlert({
  32. header: "登录失败",
  33. subHeader: "状态码:" + error.code,
  34. message: message || error.message
  35. });
  36. }
  37. console.log(user);
  38. if (user?.id) {
  39. this.navCtrl.navigateForward('/tabs/tab3'); // 导航到主页或其他页面
  40. }
  41. }
  42. async register() {
  43. let user = new Parse.User();
  44. user.set("username", this.username);
  45. user.set("password", this.password);
  46. try {
  47. let result = await user.signUp();
  48. console.log(result);
  49. if (result?.id) {
  50. // 注册成功后立即加载用户数据
  51. this.loadUserData();
  52. this.navCtrl.navigateForward('/tabs/tab3'); // 导航到主页或其他页面
  53. }
  54. } catch (error: any) {
  55. let message: string = "";
  56. if (error?.message.indexOf("already exists") > -1) {
  57. message = "该账号已存在请修改后重试";
  58. }
  59. if (error?.message.indexOf("empty") > -1) {
  60. message = "账号不能为空请输入后重试";
  61. }
  62. this.presentAlert({
  63. header: "注册失败",
  64. subHeader: "状态码:" + error.code,
  65. message: message || error.message
  66. });
  67. }
  68. }
  69. async presentAlert(options: { header: string, subHeader: string, message: string }) {
  70. const alert = await this.alertController.create({
  71. header: options?.header,
  72. subHeader: options?.subHeader,
  73. message: options?.message,
  74. buttons: ['好的'],
  75. });
  76. await alert.present();
  77. }
  78. back() {
  79. this.navCtrl.back();
  80. }
  81. async loadUserData() {
  82. const currentUser = Parse.User.current();
  83. if (currentUser) {
  84. // 如果当前用户已登录,加载用户数据
  85. console.log('当前用户已登录:', currentUser.getUsername());
  86. // 这里可以调用你需要的加载用户数据的方法,比如触发检测数据的方法
  87. // 示例:
  88. // this.loadData();
  89. }
  90. }
  91. async logout() {
  92. try {
  93. await Parse.User.logOut();
  94. console.log('用户已登出');
  95. // 清除本地存储的用户数据,如需要可以重置页面数据或状态
  96. // 示例:
  97. // this.username = '';
  98. // this.password = '';
  99. // this.loadData(); // 清除用户数据
  100. } catch (error) {
  101. console.error('登出失败:', error);
  102. }
  103. }
  104. }