meet-my-ride 1.2.2 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,16 @@
1
1
  import { AxiosInstance } from "axios";
2
2
  import { UserLogin, AuthResponse, UserRegisterResponse, VerifyEmailResponse, UserRefreshResponse, User } from "../users/user.types";
3
3
  import { TokenStorage } from "../tokenstorage/tokenstorage";
4
+ import { MeetMyRideClient } from "../client";
4
5
  export declare class AuthService {
5
6
  private http;
6
7
  private storage;
8
+ private client?;
7
9
  private userSubject;
8
10
  user$: import("rxjs").Observable<User | null>;
9
11
  private isAuthenticatedSubject;
10
12
  isAuthenticated$: import("rxjs").Observable<boolean>;
11
- constructor(http: AxiosInstance, storage: TokenStorage);
13
+ constructor(http: AxiosInstance, storage: TokenStorage, client?: MeetMyRideClient | undefined);
12
14
  private setUser;
13
15
  private loadFromStorage;
14
16
  login(data: UserLogin): Promise<AuthResponse>;
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AuthService = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  class AuthService {
6
- constructor(http, storage) {
6
+ constructor(http, storage, client // Optional, used for setToken
7
+ ) {
7
8
  this.http = http;
8
9
  this.storage = storage;
9
- // Reactive state
10
+ this.client = client;
11
+ // --- Reactive state ---
10
12
  this.userSubject = new rxjs_1.BehaviorSubject(null);
11
13
  this.user$ = this.userSubject.asObservable();
12
14
  this.isAuthenticatedSubject = new rxjs_1.BehaviorSubject(false);
@@ -21,30 +23,42 @@ class AuthService {
21
23
  this.isAuthenticatedSubject.next(!!user);
22
24
  }
23
25
  async loadFromStorage() {
24
- var _a, _b;
25
26
  const token = await this.storage.getAccessToken();
26
- const userJson = await ((_b = (_a = this.storage).getUser) === null || _b === void 0 ? void 0 : _b.call(_a)); // Optional in TokenStorage
27
+ const userJson = this.storage.getUser ? await this.storage.getUser() : null;
27
28
  if (token && userJson) {
28
- this.setUser(JSON.parse(userJson));
29
+ try {
30
+ const user = JSON.parse(userJson);
31
+ this.setUser(user);
32
+ // Update axios headers if client exists
33
+ if (this.client) {
34
+ this.client.setToken(token);
35
+ }
36
+ }
37
+ catch (_a) {
38
+ this.setUser(null);
39
+ }
29
40
  }
30
41
  else {
31
42
  this.setUser(null);
32
43
  }
33
44
  }
34
45
  // -------------------------
35
- // AUTH METHODS
46
+ // AUTH METHODS
36
47
  // -------------------------
37
48
  async login(data) {
38
49
  const res = await this.http.post("/users/login", data);
39
- // Save tokens
40
- if (res.data.accessToken && res.data.refreshToken) {
41
- await this.storage.setTokens(res.data.accessToken, res.data.refreshToken);
50
+ const { accessToken, refreshToken, user } = res.data;
51
+ if (accessToken && refreshToken) {
52
+ await this.storage.setTokens(accessToken, refreshToken);
53
+ if (this.storage.setUser) {
54
+ await this.storage.setUser(JSON.stringify(user));
55
+ }
56
+ this.setUser(user);
57
+ // Update axios headers if client exists
58
+ if (this.client) {
59
+ this.client.setToken(accessToken);
60
+ }
42
61
  }
43
- // Save user (only if your TokenStorage supports it)
44
- if (this.storage.setUser) {
45
- await this.storage.setUser(JSON.stringify(res.data.user));
46
- }
47
- this.setUser(res.data.user);
48
62
  return res.data;
49
63
  }
50
64
  async register(data) {
@@ -53,11 +67,13 @@ class AuthService {
53
67
  }
54
68
  async refresh(refreshToken) {
55
69
  var _a;
56
- const res = await this.http.post("/users/refresh", {
57
- refreshToken
58
- });
70
+ const res = await this.http.post("/users/refresh", { refreshToken });
59
71
  if (res.data.accessToken) {
60
72
  await this.storage.setTokens(res.data.accessToken, (_a = res.data.refreshToken) !== null && _a !== void 0 ? _a : "");
73
+ // Update axios headers if client exists
74
+ if (this.client) {
75
+ this.client.setToken(res.data.accessToken);
76
+ }
61
77
  }
62
78
  return res.data;
63
79
  }
@@ -71,9 +87,12 @@ class AuthService {
71
87
  async logout() {
72
88
  await this.storage.clear();
73
89
  this.setUser(null);
90
+ if (this.client) {
91
+ this.client.setToken(null);
92
+ }
74
93
  }
75
94
  // -------------------------
76
- // GETTERS
95
+ // GETTERS
77
96
  // -------------------------
78
97
  get currentUser() {
79
98
  return this.userSubject.value;
package/dist/client.d.ts CHANGED
@@ -1,12 +1,13 @@
1
+ import { AxiosInstance } from "axios";
1
2
  import { UserService } from "./users/user.service";
3
+ import { AuthService } from "./auth/auth.service";
2
4
  export declare class MeetMyRideClient {
3
- private baseUrl;
4
- private apiKey?;
5
- private readonly http;
6
- user: UserService;
7
- constructor(baseUrl: string, apiKey?: string | undefined);
5
+ readonly http: AxiosInstance;
6
+ readonly user: UserService;
7
+ readonly auth: AuthService;
8
+ constructor(baseUrl: string, apiKey?: string);
8
9
  /**
9
- * Allow services (like login/refresh) to update the Authorization header.
10
+ * Allows AuthService to update the Authorization header.
10
11
  */
11
- private setToken;
12
+ setToken(token: string | null): void;
12
13
  }
package/dist/client.js CHANGED
@@ -6,25 +6,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MeetMyRideClient = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  const user_service_1 = require("./users/user.service");
9
+ const auth_service_1 = require("./auth/auth.service");
10
+ const tokenstorage_1 = require("./tokenstorage/tokenstorage");
9
11
  class MeetMyRideClient {
10
12
  constructor(baseUrl, apiKey) {
11
- this.baseUrl = baseUrl;
12
- this.apiKey = apiKey;
13
+ const storage = new tokenstorage_1.TokenStorageService();
13
14
  this.http = axios_1.default.create({
14
15
  baseURL: baseUrl,
15
16
  headers: {
16
17
  "Content-Type": "application/json",
17
- ...(apiKey ? { "Authorization": `Bearer ${apiKey}` } : {})
18
+ ...(apiKey ? { Authorization: `Bearer ${apiKey}` } : {})
18
19
  }
19
20
  });
20
21
  // Initialize modules/services
21
22
  this.user = new user_service_1.UserService(this.http);
23
+ this.auth = new auth_service_1.AuthService(this.http, storage, this);
22
24
  }
23
25
  /**
24
- * Allow services (like login/refresh) to update the Authorization header.
26
+ * Allows AuthService to update the Authorization header.
25
27
  */
26
28
  setToken(token) {
27
- this.http.defaults.headers["Authorization"] = `Bearer ${token}`;
29
+ if (token) {
30
+ this.http.defaults.headers["Authorization"] = `Bearer ${token}`;
31
+ }
32
+ else {
33
+ delete this.http.defaults.headers["Authorization"];
34
+ }
28
35
  }
29
36
  }
30
37
  exports.MeetMyRideClient = MeetMyRideClient;
@@ -1,8 +1,16 @@
1
1
  export interface TokenStorage {
2
2
  getAccessToken(): Promise<string | null>;
3
3
  getRefreshToken(): Promise<string | null>;
4
- setTokens(access: string, refresh: string): Promise<void>;
4
+ setTokens(accessToken: string, refreshToken: string): Promise<void>;
5
+ getUser(): Promise<string | null>;
6
+ setUser(userJson: string): Promise<void>;
7
+ clear(): Promise<void>;
8
+ }
9
+ export declare class TokenStorageService implements TokenStorage {
10
+ getAccessToken(): Promise<string | null>;
11
+ getRefreshToken(): Promise<string | null>;
12
+ setTokens(accessToken: string, refreshToken: string): Promise<void>;
13
+ getUser(): Promise<string | null>;
14
+ setUser(userJson: string): Promise<void>;
5
15
  clear(): Promise<void>;
6
- getUser?(): Promise<string | null>;
7
- setUser?(user: string): Promise<void>;
8
16
  }
@@ -1,3 +1,41 @@
1
1
  "use strict";
2
- // tokenstorage/tokenstorage.ts
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenStorageService = void 0;
4
+ // src/auth/tokenstorage.ts
5
+ const preferences_1 = require("@capacitor/preferences");
6
+ class TokenStorageService {
7
+ // -------------------------
8
+ // TOKENS
9
+ // -------------------------
10
+ async getAccessToken() {
11
+ const { value } = await preferences_1.Preferences.get({ key: "accessToken" });
12
+ return value;
13
+ }
14
+ async getRefreshToken() {
15
+ const { value } = await preferences_1.Preferences.get({ key: "refreshToken" });
16
+ return value;
17
+ }
18
+ async setTokens(accessToken, refreshToken) {
19
+ await preferences_1.Preferences.set({ key: "accessToken", value: accessToken });
20
+ await preferences_1.Preferences.set({ key: "refreshToken", value: refreshToken });
21
+ }
22
+ // -------------------------
23
+ // USER
24
+ // -------------------------
25
+ async getUser() {
26
+ const { value } = await preferences_1.Preferences.get({ key: "user" });
27
+ return value;
28
+ }
29
+ async setUser(userJson) {
30
+ await preferences_1.Preferences.set({ key: "user", value: userJson });
31
+ }
32
+ // -------------------------
33
+ // CLEAR ALL
34
+ // -------------------------
35
+ async clear() {
36
+ await preferences_1.Preferences.remove({ key: "accessToken" });
37
+ await preferences_1.Preferences.remove({ key: "refreshToken" });
38
+ await preferences_1.Preferences.remove({ key: "user" });
39
+ }
40
+ }
41
+ exports.TokenStorageService = TokenStorageService;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meet-my-ride",
3
- "version": "1.2.2",
3
+ "version": "1.2.4",
4
4
  "description": "Private library for the MeetMyRide applications",
5
5
  "repository": {
6
6
  "type": "git",