Skip to content

Commit b7f7b86

Browse files
committed
Add support for NodeJS
Now cookies are only used if the package is used in browser.
1 parent 2e5a67d commit b7f7b86

File tree

2 files changed

+43
-23
lines changed

2 files changed

+43
-23
lines changed

src/session/index.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ interface ISession {
2424
class Session implements ISession {
2525
sessions: { [id: string]: ISession } = {};
2626
tokenName: string = "token";
27+
_token: string | undefined = undefined;
2728

2829
/**
2930
* Initializes a base Session.
@@ -41,9 +42,11 @@ class Session implements ISession {
4142
* @returns {string | undefined} A users JWT if set
4243
*/
4344
get token(): string | undefined {
44-
const token = Cookies.get(this.tokenName);
45-
46-
return token ? token : undefined;
45+
if (this.checkPlatform() === "WEB") {
46+
return Cookies.get(this.tokenName);
47+
} else {
48+
return this._token;
49+
}
4750
}
4851

4952
//> Setter
@@ -55,14 +58,31 @@ class Session implements ISession {
5558
* the cookie will be removed.
5659
*/
5760
set token(value: string | undefined) {
58-
if (value) {
59-
Cookies.set(this.tokenName, value, { secure: true, sameSite: "Lax" });
61+
if (this.checkPlatform() === "WEB") {
62+
if (value) {
63+
Cookies.set(this.tokenName, value ? value : "", {
64+
/* Expire time is set to 4 minutes */
65+
expires: 4 / 1440,
66+
});
67+
} else {
68+
Cookies.remove(this.tokenName);
69+
}
6070
} else {
61-
Cookies.remove(this.tokenName);
71+
this._token = value;
6272
}
6373
}
6474

6575
//> Methods
76+
/**
77+
* Check if snek-client is used by node or web.
78+
*/
79+
checkPlatform() {
80+
if (typeof window === "undefined") {
81+
return "NODE";
82+
} else {
83+
return "WEB";
84+
}
85+
}
6686
/**
6787
* Add a subSession to a session.
6888
*

src/session/sessions.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class GithubSession extends Session {
6666
/** @class CookieSession extends token session handling with cookies */
6767
class CookieSession extends Session {
6868
refreshTokenName: string = "refresh";
69+
_refreshToken: string | undefined = undefined;
6970

7071
/**
7172
* Initializes a cookie session.
@@ -94,9 +95,11 @@ class CookieSession extends Session {
9495
* @returns {string | undefined} A users JWT if set
9596
*/
9697
get refreshToken(): string | undefined {
97-
const token = Cookies.get(this.refreshTokenName);
98-
99-
return token ? token : undefined;
98+
if (this.checkPlatform() === "WEB") {
99+
return Cookies.get(this.refreshTokenName);
100+
} else {
101+
return this._token;
102+
}
100103
}
101104

102105
//> Setter
@@ -109,14 +112,7 @@ class CookieSession extends Session {
109112
* minutes.
110113
*/
111114
set token(value: string | undefined) {
112-
if (value) {
113-
Cookies.set(this.tokenName, value ? value : "", {
114-
/* Expire time is set to 4 minutes */
115-
expires: 4 / 1440,
116-
});
117-
} else {
118-
Cookies.remove(this.tokenName);
119-
}
115+
super.token = value;
120116
}
121117

122118
/**
@@ -128,13 +124,17 @@ class CookieSession extends Session {
128124
* set to six days.
129125
*/
130126
set refreshToken(value: string | undefined) {
131-
if (value) {
132-
Cookies.set(this.refreshTokenName, value, {
133-
/* Expire time is set to 6 days */
134-
expires: 6,
135-
});
127+
if (this.checkPlatform() === "WEB") {
128+
if (value) {
129+
Cookies.set(this.refreshTokenName, value ? value : "", {
130+
/* Expire time is set to 6 days */
131+
expires: 6,
132+
});
133+
} else {
134+
Cookies.remove(this.refreshTokenName);
135+
}
136136
} else {
137-
Cookies.remove(this.refreshTokenName);
137+
this._refreshToken = value;
138138
}
139139
}
140140
}

0 commit comments

Comments
 (0)