MCPcopy Create free account
hub / github.com/Silentely/eSIM-Tools / AuthHandler

Class AuthHandler

src/simyo/js/modules/auth-handler.js:11–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9import { t } from '../../../js/modules/i18n.js';
10
11export class AuthHandler {
12 constructor() {
13 this.apiEndpoints = getApiEndpoints();
14 }
15
16 /**
17 * 登录Simyo账户
18 * @param {string} phoneNumber - 手机号
19 * @param {string} password - 密码
20 * @returns {Promise<Object>} 登录结果
21 */
22 async login(phoneNumber, password) {
23 // 验证手机号格式
24 if (!validatePhoneNumber(phoneNumber)) {
25 throw new Error(t('simyo.errors.invalidPhone'));
26 }
27
28 if (!password) {
29 throw new Error(t('simyo.errors.requirePassword'));
30 }
31
32 try {
33 const response = await fetch(this.apiEndpoints.login, {
34 method: 'POST',
35 headers: createHeaders(false),
36 body: JSON.stringify({
37 phoneNumber: phoneNumber,
38 password: password
39 })
40 });
41
42 const data = await handleApiResponse(response);
43
44 // 提取session token
45 const sessionToken = data.result && data.result.sessionToken;
46
47 if (!sessionToken) {
48 throw new Error(data.message || t('simyo.auth.loginMissingToken'));
49 }
50
51 // 保存到状态
52 stateManager.setState({
53 sessionToken: sessionToken,
54 phoneNumber: phoneNumber,
55 password: password
56 });
57
58 return {
59 success: true,
60 message: t('simyo.auth.loginSuccess'),
61 sessionToken: sessionToken
62 };
63 } catch (error) {
64 console.error(t('simyo.auth.log.loginFailed'), error);
65 throw error;
66 }
67 }
68

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected