@sanvika/auth 2.5.3 → 2.5.5

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.
Files changed (2) hide show
  1. package/dist/server.js +93 -5
  2. package/package.json +1 -1
package/dist/server.js CHANGED
@@ -1,19 +1,25 @@
1
- // server.js
2
- var _authUrl = () => {
1
+ const _authUrl = () => {
3
2
  var _a;
4
3
  return typeof process !== "undefined" && ((_a = process.env) == null ? void 0 : _a.AUTH_URL) || "https://accounts.sanvikaproduction.com";
5
4
  };
6
- var _serviceKey = () => {
5
+ const _serviceKey = () => {
7
6
  var _a;
8
7
  return typeof process !== "undefined" && ((_a = process.env) == null ? void 0 : _a.AUTH_SERVICE_KEY) || "";
9
8
  };
10
- var _s2sHeaders = () => ({
9
+ const _s2sHeaders = () => ({
11
10
  "Content-Type": "application/json",
12
11
  ..._serviceKey() ? { "x-service-key": _serviceKey() } : {}
13
12
  });
13
+ function _resolveAuthHeader(requestOrObj) {
14
+ var _a, _b;
15
+ if (typeof ((_a = requestOrObj == null ? void 0 : requestOrObj.headers) == null ? void 0 : _a.get) === "function") {
16
+ return requestOrObj.headers.get("authorization") || requestOrObj.headers.get("Authorization") || null;
17
+ }
18
+ return ((_b = requestOrObj == null ? void 0 : requestOrObj.headers) == null ? void 0 : _b.authorization) || null;
19
+ }
14
20
  async function verifyAuthToken(request) {
15
21
  try {
16
- const auth = request.headers.get("authorization");
22
+ const auth = _resolveAuthHeader(request);
17
23
  if (!(auth == null ? void 0 : auth.startsWith("Bearer "))) return null;
18
24
  const res = await fetch(`${_authUrl()}/api/auth/verify-token`, {
19
25
  method: "GET",
@@ -30,6 +36,28 @@ async function extractAuthUid(request) {
30
36
  const payload = await verifyAuthToken(request);
31
37
  return (payload == null ? void 0 : payload.sub) || null;
32
38
  }
39
+ async function extractUserFromToken(request) {
40
+ const auth = _resolveAuthHeader(request);
41
+ if (!auth || !auth.startsWith("Bearer ")) {
42
+ throw new Error("Authorization header missing or invalid");
43
+ }
44
+ const payload = await verifyAuthToken(request);
45
+ if (!payload) throw new Error("Invalid or expired token");
46
+ const uid = payload.sub || payload.uid;
47
+ if (!uid) throw new Error("Invalid token payload - missing uid");
48
+ return {
49
+ uid,
50
+ mobile: payload.mobile || null,
51
+ role: payload.role || "user",
52
+ roles: [],
53
+ deviceId: payload.deviceId || null,
54
+ image: payload.image || null,
55
+ firstName: payload.firstName || null,
56
+ lastName: payload.lastName || null,
57
+ exp: payload.exp,
58
+ iat: payload.iat
59
+ };
60
+ }
33
61
  async function getUserFromAuth(uid) {
34
62
  if (!uid) return null;
35
63
  try {
@@ -58,6 +86,22 @@ async function getUserLocationFromAuth(uid) {
58
86
  return null;
59
87
  }
60
88
  }
89
+ async function updateUserLocation(uid, locationData) {
90
+ if (!uid || !locationData) return null;
91
+ try {
92
+ const res = await fetch(`${_authUrl()}/api/location`, {
93
+ method: "POST",
94
+ headers: _s2sHeaders(),
95
+ body: JSON.stringify({ uid, ...locationData }),
96
+ signal: AbortSignal.timeout(5e3)
97
+ });
98
+ if (!res.ok) return null;
99
+ const data = await res.json();
100
+ return data.success ? data.data : null;
101
+ } catch {
102
+ return null;
103
+ }
104
+ }
61
105
  async function getUserByMobileFromAuth(mobile, authToken = "") {
62
106
  var _a;
63
107
  if (!mobile) return null;
@@ -91,6 +135,46 @@ async function batchGetUsersFromAuth(uids) {
91
135
  }
92
136
  return results;
93
137
  }
138
+ async function updateUserProfile(uid, data, authToken = "") {
139
+ if (!uid || !data) return null;
140
+ try {
141
+ const headers = {
142
+ "Content-Type": "application/json",
143
+ ..._serviceKey() ? { "x-service-key": _serviceKey() } : {},
144
+ ...authToken ? { Authorization: `Bearer ${authToken}` } : {}
145
+ };
146
+ const res = await fetch(
147
+ `${_authUrl()}/api/user/profile?uid=${encodeURIComponent(uid)}`,
148
+ {
149
+ method: "PUT",
150
+ headers,
151
+ body: JSON.stringify(data),
152
+ signal: AbortSignal.timeout(8e3)
153
+ }
154
+ );
155
+ if (!res.ok) return null;
156
+ const json = await res.json();
157
+ return (json == null ? void 0 : json.success) ? json.data : null;
158
+ } catch {
159
+ return null;
160
+ }
161
+ }
162
+ async function deleteUserFromAuth(uid) {
163
+ if (!uid) return false;
164
+ try {
165
+ const res = await fetch(
166
+ `${_authUrl()}/api/admin/users/${encodeURIComponent(uid)}/delete`,
167
+ {
168
+ method: "DELETE",
169
+ headers: _s2sHeaders(),
170
+ signal: AbortSignal.timeout(1e4)
171
+ }
172
+ );
173
+ return res.ok;
174
+ } catch {
175
+ return false;
176
+ }
177
+ }
94
178
  async function listUsersFromAuth({ page = 1, limit = 20, search = "", authToken = "" } = {}) {
95
179
  const empty = { users: [], pagination: { page, limit, total: 0, pages: 0 } };
96
180
  try {
@@ -113,10 +197,14 @@ async function listUsersFromAuth({ page = 1, limit = 20, search = "", authToken
113
197
  }
114
198
  export {
115
199
  batchGetUsersFromAuth,
200
+ deleteUserFromAuth,
116
201
  extractAuthUid,
202
+ extractUserFromToken,
117
203
  getUserByMobileFromAuth,
118
204
  getUserFromAuth,
119
205
  getUserLocationFromAuth,
120
206
  listUsersFromAuth,
207
+ updateUserLocation,
208
+ updateUserProfile,
121
209
  verifyAuthToken
122
210
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanvika/auth",
3
- "version": "2.5.3",
3
+ "version": "2.5.5",
4
4
  "description": "Sanvika Auth SDK — React components/hooks + server-side token verification and user proxy",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",