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
|
-
|
|
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 =
|
|
27
|
+
const userJson = this.storage.getUser ? await this.storage.getUser() : null;
|
|
27
28
|
if (token && userJson) {
|
|
28
|
-
|
|
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
|
-
//
|
|
46
|
+
// AUTH METHODS
|
|
36
47
|
// -------------------------
|
|
37
48
|
async login(data) {
|
|
38
49
|
const res = await this.http.post("/users/login", data);
|
|
39
|
-
|
|
40
|
-
if (
|
|
41
|
-
await this.storage.setTokens(
|
|
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
|
-
//
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
*
|
|
10
|
+
* Allows AuthService to update the Authorization header.
|
|
10
11
|
*/
|
|
11
|
-
|
|
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
|
-
|
|
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 ? {
|
|
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
|
-
*
|
|
26
|
+
* Allows AuthService to update the Authorization header.
|
|
25
27
|
*/
|
|
26
28
|
setToken(token) {
|
|
27
|
-
|
|
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(
|
|
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;
|