jcc-express-mvc 1.8.8 → 1.8.21
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.
- package/__tests__/MySqlSchemaBlueprint.test.d.ts +2 -0
- package/__tests__/MySqlSchemaBlueprint.test.d.ts.map +1 -0
- package/__tests__/MySqlSchemaBlueprint.test.js +55 -0
- package/__tests__/PostgresTranslator.test.d.ts +2 -0
- package/__tests__/PostgresTranslator.test.d.ts.map +1 -0
- package/__tests__/PostgresTranslator.test.js +82 -0
- package/__tests__/SQLiteTranslator.test.d.ts +2 -0
- package/__tests__/SQLiteTranslator.test.d.ts.map +1 -0
- package/__tests__/SQLiteTranslator.test.js +125 -0
- package/__tests__/SchemaAlterBlueprint.test.d.ts +2 -0
- package/__tests__/SchemaAlterBlueprint.test.d.ts.map +1 -0
- package/__tests__/SchemaAlterBlueprint.test.js +35 -0
- package/global.d.ts +3 -1
- package/index.d.ts +28 -3
- package/index.d.ts.map +1 -1
- package/index.js +33 -75
- package/lib/Application/Application.d.ts +1 -1
- package/lib/Application/Application.d.ts.map +1 -1
- package/lib/Application/Application.js +2 -2
- package/lib/Application/ApplicationBuilder.d.ts.map +1 -1
- package/lib/Application/ApplicationBuilder.js +9 -2
- package/lib/Auth/AuthMiddleware.d.ts.map +1 -1
- package/lib/Auth/AuthMiddleware.js +29 -12
- package/lib/Auth/index.d.ts +17 -3
- package/lib/Auth/index.d.ts.map +1 -1
- package/lib/Auth/index.js +128 -26
- package/lib/Auth/loginRateLimit.d.ts +6 -0
- package/lib/Auth/loginRateLimit.d.ts.map +1 -0
- package/lib/Auth/loginRateLimit.js +25 -0
- package/lib/Auth/refreshTokenStore.d.ts +24 -0
- package/lib/Auth/refreshTokenStore.d.ts.map +1 -0
- package/lib/Auth/refreshTokenStore.js +46 -0
- package/lib/Command-Line/DBCommand.d.ts.map +1 -1
- package/lib/Command-Line/DBCommand.js +9 -3
- package/lib/Command-Line/KeyGenerateCommand.d.ts +6 -0
- package/lib/Command-Line/KeyGenerateCommand.d.ts.map +1 -0
- package/lib/Command-Line/KeyGenerateCommand.js +47 -0
- package/lib/Command-Line/NodeArtisanCommand.d.ts +2 -0
- package/lib/Command-Line/NodeArtisanCommand.d.ts.map +1 -1
- package/lib/Command-Line/NodeArtisanCommand.js +20 -3
- package/lib/Command-Line/NodeTinker/Tinker.d.ts +5 -2
- package/lib/Command-Line/NodeTinker/Tinker.d.ts.map +1 -1
- package/lib/Command-Line/NodeTinker/Tinker.js +13 -3
- package/lib/Command-Line/WatchCommand.d.ts +29 -0
- package/lib/Command-Line/WatchCommand.d.ts.map +1 -0
- package/lib/Command-Line/WatchCommand.js +234 -0
- package/lib/Command-Line/files/Models.d.ts.map +1 -1
- package/lib/Command-Line/files/Models.js +41 -16
- package/lib/Console/Command.d.ts +18 -0
- package/lib/Console/Command.d.ts.map +1 -1
- package/lib/Console/Command.js +29 -0
- package/lib/Container/index.d.ts.map +1 -1
- package/lib/Container/index.js +21 -7
- package/lib/Database/Database.d.ts +2 -1
- package/lib/Database/Database.d.ts.map +1 -1
- package/lib/Database/Database.js +6 -5
- package/lib/Database/DatabaseServiceProvider.d.ts +0 -4
- package/lib/Database/DatabaseServiceProvider.d.ts.map +1 -1
- package/lib/Database/DatabaseServiceProvider.js +9 -56
- package/lib/Database/Drivers/MongooseDriver.d.ts +2 -0
- package/lib/Database/Drivers/MongooseDriver.d.ts.map +1 -1
- package/lib/Database/Drivers/MongooseDriver.js +11 -13
- package/lib/Database/Drivers/SequelizeDriver.d.ts +9 -1
- package/lib/Database/Drivers/SequelizeDriver.d.ts.map +1 -1
- package/lib/Database/Drivers/SequelizeDriver.js +43 -18
- package/lib/Error/SocialiteAuthError/SocialiteAuthError.d.ts +9 -0
- package/lib/Error/SocialiteAuthError/SocialiteAuthError.d.ts.map +1 -0
- package/lib/Error/SocialiteAuthError/SocialiteAuthError.js +17 -0
- package/lib/Global/helpers.d.ts.map +1 -1
- package/lib/Global/helpers.js +6 -4
- package/lib/Http/index.d.ts +3 -1
- package/lib/Http/index.d.ts.map +1 -1
- package/lib/Http/index.js +26 -5
- package/lib/Interface/index.d.ts +12 -3
- package/lib/Interface/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Builder.d.ts +12 -1
- package/lib/Jcc-eloquent/lib/Builder.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Builder.js +116 -4
- package/lib/Jcc-eloquent/lib/Interfaces/index.d.ts +37 -2
- package/lib/Jcc-eloquent/lib/Interfaces/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Migration.d.ts +6 -0
- package/lib/Jcc-eloquent/lib/Migration.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Migration.js +24 -2
- package/lib/Jcc-eloquent/lib/Model.d.ts +24 -7
- package/lib/Jcc-eloquent/lib/Model.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Model.js +35 -2
- package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts +2 -1
- package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/QueryBuilder.js +10 -1
- package/lib/Jcc-eloquent/lib/Rollback.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Rollback.js +9 -2
- package/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.js +3 -3
- package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.d.ts +6 -2
- package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.js +41 -12
- package/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.js +21 -3
- package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.d.ts +1 -0
- package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.js +70 -14
- package/lib/Jcc-eloquent/lib/Schema/index.d.ts +12 -0
- package/lib/Jcc-eloquent/lib/Schema/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/Schema/index.js +27 -6
- package/lib/Jcc-eloquent/lib/utils/index.d.ts +13 -0
- package/lib/Jcc-eloquent/lib/utils/index.d.ts.map +1 -1
- package/lib/Jcc-eloquent/lib/utils/index.js +62 -0
- package/lib/Middleware/index.d.ts.map +1 -1
- package/lib/Middleware/index.js +4 -7
- package/lib/Model/Sequelize.d.ts +3 -0
- package/lib/Model/Sequelize.d.ts.map +1 -0
- package/lib/Model/Sequelize.js +6 -0
- package/lib/Providers/SessionServiceProvider.d.ts +12 -0
- package/lib/Providers/SessionServiceProvider.d.ts.map +1 -0
- package/lib/Providers/SessionServiceProvider.js +47 -0
- package/lib/Queue/Controllers/QueueControllers.d.ts +4 -13
- package/lib/Queue/Controllers/QueueControllers.d.ts.map +1 -1
- package/lib/Queue/Controllers/QueueControllers.js +1 -16
- package/lib/Queue/Route/web.js +4 -1
- package/lib/Queue/index.d.ts +1 -0
- package/lib/Queue/index.d.ts.map +1 -1
- package/lib/Queue/index.js +3 -0
- package/lib/Queue/middleware/queueDashboardGuard.d.ts +7 -0
- package/lib/Queue/middleware/queueDashboardGuard.d.ts.map +1 -0
- package/lib/Queue/middleware/queueDashboardGuard.js +43 -0
- package/lib/Response/index.d.ts.map +1 -1
- package/lib/Response/index.js +6 -1
- package/lib/Routes/Route.d.ts +2 -2
- package/lib/Routes/Route.d.ts.map +1 -1
- package/lib/Routes/RouteBuilder.d.ts +2 -2
- package/lib/Routes/RouteBuilder.d.ts.map +1 -1
- package/lib/Security/CsrfMiddleware.d.ts.map +1 -1
- package/lib/Security/CsrfMiddleware.js +6 -4
- package/lib/Session/DatabaseSession.d.ts +9 -3
- package/lib/Session/DatabaseSession.d.ts.map +1 -1
- package/lib/Session/DatabaseSession.js +38 -36
- package/lib/Session/ExpressJccSession.d.ts +23 -0
- package/lib/Session/ExpressJccSession.d.ts.map +1 -0
- package/lib/Session/ExpressJccSession.js +110 -0
- package/lib/Session/RedisSession.d.ts +2 -2
- package/lib/Session/RedisSession.d.ts.map +1 -1
- package/lib/Session/RedisSession.js +19 -5
- package/lib/Session/SessionManager.d.ts +18 -4
- package/lib/Session/SessionManager.d.ts.map +1 -1
- package/lib/Session/SessionManager.js +53 -17
- package/lib/Socialite/AbstractProvider.d.ts +60 -0
- package/lib/Socialite/AbstractProvider.d.ts.map +1 -0
- package/lib/Socialite/AbstractProvider.js +136 -0
- package/lib/Socialite/Drivers/facebook/FacebookDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/facebook/FacebookDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/facebook/FacebookDriver.js +40 -0
- package/lib/Socialite/Drivers/facebook/FacebookProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/facebook/FacebookProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/facebook/FacebookProvider.js +28 -0
- package/lib/Socialite/Drivers/github/GitHubDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/github/GitHubDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/github/GitHubDriver.js +54 -0
- package/lib/Socialite/Drivers/github/GitHubProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/github/GitHubProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/github/GitHubProvider.js +28 -0
- package/lib/Socialite/Drivers/gitlab/GitLabDriver.d.ts +10 -0
- package/lib/Socialite/Drivers/gitlab/GitLabDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/gitlab/GitLabDriver.js +37 -0
- package/lib/Socialite/Drivers/gitlab/GitLabProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/gitlab/GitLabProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/gitlab/GitLabProvider.js +28 -0
- package/lib/Socialite/Drivers/google/GoogleDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/google/GoogleDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/google/GoogleDriver.js +39 -0
- package/lib/Socialite/Drivers/google/GoogleProvider.d.ts +15 -0
- package/lib/Socialite/Drivers/google/GoogleProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/google/GoogleProvider.js +28 -0
- package/lib/Socialite/Drivers/slack/SlackDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/slack/SlackDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/slack/SlackDriver.js +41 -0
- package/lib/Socialite/Drivers/slack/SlackProvider.d.ts +16 -0
- package/lib/Socialite/Drivers/slack/SlackProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/slack/SlackProvider.js +37 -0
- package/lib/Socialite/Drivers/twitter/TwitterDriver.d.ts +9 -0
- package/lib/Socialite/Drivers/twitter/TwitterDriver.d.ts.map +1 -0
- package/lib/Socialite/Drivers/twitter/TwitterDriver.js +57 -0
- package/lib/Socialite/Drivers/twitter/TwitterProvider.d.ts +16 -0
- package/lib/Socialite/Drivers/twitter/TwitterProvider.d.ts.map +1 -0
- package/lib/Socialite/Drivers/twitter/TwitterProvider.js +38 -0
- package/lib/Socialite/SocialUser.d.ts +42 -0
- package/lib/Socialite/SocialUser.d.ts.map +1 -0
- package/lib/Socialite/SocialUser.js +116 -0
- package/lib/Socialite/Socialite.d.ts +13 -0
- package/lib/Socialite/Socialite.d.ts.map +1 -0
- package/lib/Socialite/Socialite.js +41 -0
- package/lib/Socialite/SocialiteProvider.d.ts +9 -0
- package/lib/Socialite/SocialiteProvider.d.ts.map +1 -0
- package/lib/Socialite/SocialiteProvider.js +15 -0
- package/lib/Socialite/config.d.ts +7 -0
- package/lib/Socialite/config.d.ts.map +1 -0
- package/lib/Socialite/config.js +44 -0
- package/lib/Socialite/constant.d.ts +18 -0
- package/lib/Socialite/constant.d.ts.map +1 -0
- package/lib/Socialite/constant.js +20 -0
- package/lib/Socialite/index.d.ts +13 -0
- package/lib/Socialite/index.d.ts.map +1 -0
- package/lib/Socialite/index.js +25 -0
- package/lib/Socialite/types.d.ts +13 -0
- package/lib/Socialite/types.d.ts.map +1 -0
- package/lib/Socialite/types.js +2 -0
- package/lib/Type/index.d.ts +1 -0
- package/lib/Type/index.d.ts.map +1 -1
- package/lib/Validation/Validator/CustomValidation.d.ts.map +1 -1
- package/lib/Validation/Validator/CustomValidation.js +2 -2
- package/lib/Validation/Validator/helper.d.ts.map +1 -1
- package/lib/Validation/Validator/helper.js +8 -1
- package/lib/util/index.d.ts +36 -1
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +123 -26
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AbstractProvider } from "../../AbstractProvider";
|
|
2
|
+
import { SocialUser } from "../../SocialUser";
|
|
3
|
+
import type { OAuthAuthorizeContext, OAuthProviderConfig } from "../../types";
|
|
4
|
+
export declare class GitLabProvider extends AbstractProvider {
|
|
5
|
+
private readonly client;
|
|
6
|
+
constructor(cfg: OAuthProviderConfig);
|
|
7
|
+
getDefaultScopes(): string[];
|
|
8
|
+
buildAuthorizeUrl(state: string, _pkce?: OAuthAuthorizeContext): string;
|
|
9
|
+
fetchAccessToken(code: string, _ctx?: {
|
|
10
|
+
codeVerifier?: string;
|
|
11
|
+
}): Promise<Record<string, unknown>>;
|
|
12
|
+
fetchUserFromToken(accessToken: string): Promise<Record<string, unknown>>;
|
|
13
|
+
mapUser(raw: Record<string, unknown>): SocialUser;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=GitLabProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitLabProvider.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Socialite/Drivers/gitlab/GitLabProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,GAAG,EAAE,mBAAmB;IAKpC,gBAAgB,IAAI,MAAM,EAAE;IAI5B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAIvE,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIzE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAGlD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GitLabProvider = void 0;
|
|
4
|
+
const AbstractProvider_1 = require("../../AbstractProvider");
|
|
5
|
+
const GitLabDriver_1 = require("./GitLabDriver");
|
|
6
|
+
const SocialUser_1 = require("../../SocialUser");
|
|
7
|
+
class GitLabProvider extends AbstractProvider_1.AbstractProvider {
|
|
8
|
+
constructor(cfg) {
|
|
9
|
+
super(cfg, "gitlab");
|
|
10
|
+
this.client = new GitLabDriver_1.GitLabDriver(cfg);
|
|
11
|
+
}
|
|
12
|
+
getDefaultScopes() {
|
|
13
|
+
return ["read_user"];
|
|
14
|
+
}
|
|
15
|
+
buildAuthorizeUrl(state, _pkce) {
|
|
16
|
+
return this.client.getAuthorizationUrl(state, this.formatScopes());
|
|
17
|
+
}
|
|
18
|
+
fetchAccessToken(code, _ctx) {
|
|
19
|
+
return this.client.exchangeAuthorizationCode(code);
|
|
20
|
+
}
|
|
21
|
+
fetchUserFromToken(accessToken) {
|
|
22
|
+
return this.client.getUser(accessToken);
|
|
23
|
+
}
|
|
24
|
+
mapUser(raw) {
|
|
25
|
+
return SocialUser_1.SocialUser.fromGitLab(raw);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.GitLabProvider = GitLabProvider;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OAuthProviderConfig } from "../../types";
|
|
2
|
+
export declare class GoogleDriver {
|
|
3
|
+
private readonly cfg;
|
|
4
|
+
constructor(cfg: OAuthProviderConfig);
|
|
5
|
+
getAuthorizationUrl(state: string, scope: string): string;
|
|
6
|
+
exchangeAuthorizationCode(code: string): Promise<Record<string, unknown>>;
|
|
7
|
+
getUserInfo(accessToken: string): Promise<Record<string, unknown>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=GoogleDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoogleDriver.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Socialite/Drivers/google/GoogleDriver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,mBAAmB;IAErD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAanD,yBAAyB,CAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAe7B,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAKzE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GoogleDriver = void 0;
|
|
4
|
+
const Http_1 = require("../../../Http");
|
|
5
|
+
const constant_1 = require("../../constant");
|
|
6
|
+
class GoogleDriver {
|
|
7
|
+
constructor(cfg) {
|
|
8
|
+
this.cfg = cfg;
|
|
9
|
+
}
|
|
10
|
+
getAuthorizationUrl(state, scope) {
|
|
11
|
+
const params = new URLSearchParams({
|
|
12
|
+
client_id: this.cfg.clientId,
|
|
13
|
+
redirect_uri: this.cfg.redirectUri,
|
|
14
|
+
response_type: "code",
|
|
15
|
+
scope,
|
|
16
|
+
state,
|
|
17
|
+
access_type: "online",
|
|
18
|
+
include_granted_scopes: "true",
|
|
19
|
+
});
|
|
20
|
+
return `${constant_1.GOOGLE_AUTH}?${params.toString()}`;
|
|
21
|
+
}
|
|
22
|
+
async exchangeAuthorizationCode(code) {
|
|
23
|
+
Http_1.Http.reset().asForm();
|
|
24
|
+
const { data } = await Http_1.Http.post(constant_1.GOOGLE_TOKEN, new URLSearchParams({
|
|
25
|
+
client_id: this.cfg.clientId,
|
|
26
|
+
client_secret: this.cfg.clientSecret,
|
|
27
|
+
redirect_uri: this.cfg.redirectUri,
|
|
28
|
+
grant_type: "authorization_code",
|
|
29
|
+
code,
|
|
30
|
+
}).toString());
|
|
31
|
+
return data;
|
|
32
|
+
}
|
|
33
|
+
async getUserInfo(accessToken) {
|
|
34
|
+
Http_1.Http.reset().withHeaders({ Authorization: `Bearer ${accessToken}` });
|
|
35
|
+
const { data } = await Http_1.Http.get(constant_1.GOOGLE_USERINFO);
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.GoogleDriver = GoogleDriver;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AbstractProvider } from "../../AbstractProvider";
|
|
2
|
+
import { SocialUser } from "../../SocialUser";
|
|
3
|
+
import type { OAuthAuthorizeContext, OAuthProviderConfig } from "../../types";
|
|
4
|
+
export declare class GoogleProvider extends AbstractProvider {
|
|
5
|
+
private readonly client;
|
|
6
|
+
constructor(cfg: OAuthProviderConfig);
|
|
7
|
+
getDefaultScopes(): string[];
|
|
8
|
+
buildAuthorizeUrl(state: string, _pkce?: OAuthAuthorizeContext): string;
|
|
9
|
+
fetchAccessToken(code: string, _ctx?: {
|
|
10
|
+
codeVerifier?: string;
|
|
11
|
+
}): Promise<Record<string, unknown>>;
|
|
12
|
+
fetchUserFromToken(accessToken: string): Promise<Record<string, unknown>>;
|
|
13
|
+
mapUser(raw: Record<string, unknown>): SocialUser;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=GoogleProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GoogleProvider.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Socialite/Drivers/google/GoogleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,qBAAa,cAAe,SAAQ,gBAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,GAAG,EAAE,mBAAmB;IAKpC,gBAAgB,IAAI,MAAM,EAAE;IAI5B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAIvE,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIzE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAGlD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GoogleProvider = void 0;
|
|
4
|
+
const AbstractProvider_1 = require("../../AbstractProvider");
|
|
5
|
+
const GoogleDriver_1 = require("./GoogleDriver");
|
|
6
|
+
const SocialUser_1 = require("../../SocialUser");
|
|
7
|
+
class GoogleProvider extends AbstractProvider_1.AbstractProvider {
|
|
8
|
+
constructor(cfg) {
|
|
9
|
+
super(cfg, "google");
|
|
10
|
+
this.client = new GoogleDriver_1.GoogleDriver(cfg);
|
|
11
|
+
}
|
|
12
|
+
getDefaultScopes() {
|
|
13
|
+
return ["openid", "email", "profile"];
|
|
14
|
+
}
|
|
15
|
+
buildAuthorizeUrl(state, _pkce) {
|
|
16
|
+
return this.client.getAuthorizationUrl(state, this.formatScopes());
|
|
17
|
+
}
|
|
18
|
+
fetchAccessToken(code, _ctx) {
|
|
19
|
+
return this.client.exchangeAuthorizationCode(code);
|
|
20
|
+
}
|
|
21
|
+
fetchUserFromToken(accessToken) {
|
|
22
|
+
return this.client.getUserInfo(accessToken);
|
|
23
|
+
}
|
|
24
|
+
mapUser(raw) {
|
|
25
|
+
return SocialUser_1.SocialUser.fromGoogle(raw);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.GoogleProvider = GoogleProvider;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OAuthProviderConfig } from "../../types";
|
|
2
|
+
export declare class SlackDriver {
|
|
3
|
+
private readonly cfg;
|
|
4
|
+
constructor(cfg: OAuthProviderConfig);
|
|
5
|
+
getAuthorizationUrl(state: string, scope: string): string;
|
|
6
|
+
exchangeAuthorizationCode(code: string): Promise<Record<string, unknown>>;
|
|
7
|
+
getUser(accessToken: string): Promise<Record<string, unknown>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=SlackDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlackDriver.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Socialite/Drivers/slack/SlackDriver.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,mBAAmB;IAErD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAWnD,yBAAyB,CAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAe7B,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAWrE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlackDriver = void 0;
|
|
4
|
+
const Http_1 = require("../../../Http");
|
|
5
|
+
const constant_1 = require("../../constant");
|
|
6
|
+
const SocialiteAuthError_1 = require("../../../Error/SocialiteAuthError/SocialiteAuthError");
|
|
7
|
+
class SlackDriver {
|
|
8
|
+
constructor(cfg) {
|
|
9
|
+
this.cfg = cfg;
|
|
10
|
+
}
|
|
11
|
+
getAuthorizationUrl(state, scope) {
|
|
12
|
+
const params = new URLSearchParams({
|
|
13
|
+
client_id: this.cfg.clientId,
|
|
14
|
+
redirect_uri: this.cfg.redirectUri,
|
|
15
|
+
response_type: "code",
|
|
16
|
+
scope,
|
|
17
|
+
state,
|
|
18
|
+
});
|
|
19
|
+
return `${constant_1.SLACK_OPENID_AUTHORIZE}?${params.toString()}`;
|
|
20
|
+
}
|
|
21
|
+
async exchangeAuthorizationCode(code) {
|
|
22
|
+
Http_1.Http.reset().asForm();
|
|
23
|
+
const { data } = await Http_1.Http.post(constant_1.SLACK_OPENID_TOKEN, new URLSearchParams({
|
|
24
|
+
client_id: this.cfg.clientId,
|
|
25
|
+
client_secret: this.cfg.clientSecret,
|
|
26
|
+
code,
|
|
27
|
+
grant_type: "authorization_code",
|
|
28
|
+
redirect_uri: this.cfg.redirectUri,
|
|
29
|
+
}).toString());
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
async getUser(accessToken) {
|
|
33
|
+
Http_1.Http.reset().withHeaders({ Authorization: `Bearer ${accessToken}` });
|
|
34
|
+
const { data } = await Http_1.Http.get(constant_1.SLACK_OPENID_USERINFO);
|
|
35
|
+
if (data.ok === false) {
|
|
36
|
+
throw new SocialiteAuthError_1.SocialiteAuthError(String(data.error ?? "Slack userInfo failed"), "slack");
|
|
37
|
+
}
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.SlackDriver = SlackDriver;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AbstractProvider } from "../../AbstractProvider";
|
|
2
|
+
import { SocialUser } from "../../SocialUser";
|
|
3
|
+
import type { OAuthAuthorizeContext, OAuthProviderConfig } from "../../types";
|
|
4
|
+
export declare class SlackProvider extends AbstractProvider {
|
|
5
|
+
private readonly client;
|
|
6
|
+
constructor(cfg: OAuthProviderConfig);
|
|
7
|
+
getDefaultScopes(): string[];
|
|
8
|
+
buildAuthorizeUrl(state: string, _pkce?: OAuthAuthorizeContext): string;
|
|
9
|
+
fetchAccessToken(code: string, _ctx?: {
|
|
10
|
+
codeVerifier?: string;
|
|
11
|
+
}): Promise<Record<string, unknown>>;
|
|
12
|
+
protected extractAccessToken(tokens: Record<string, unknown>): string | null;
|
|
13
|
+
fetchUserFromToken(accessToken: string): Promise<Record<string, unknown>>;
|
|
14
|
+
mapUser(raw: Record<string, unknown>): SocialUser;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=SlackProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlackProvider.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Socialite/Drivers/slack/SlackProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,qBAAa,aAAc,SAAQ,gBAAgB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,GAAG,EAAE,mBAAmB;IAKpC,gBAAgB,IAAI,MAAM,EAAE;IAI5B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAIvE,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAInC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI;IAU5E,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIzE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAGlD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlackProvider = void 0;
|
|
4
|
+
const AbstractProvider_1 = require("../../AbstractProvider");
|
|
5
|
+
const SlackDriver_1 = require("./SlackDriver");
|
|
6
|
+
const SocialUser_1 = require("../../SocialUser");
|
|
7
|
+
const SocialiteAuthError_1 = require("../../../Error/SocialiteAuthError/SocialiteAuthError");
|
|
8
|
+
class SlackProvider extends AbstractProvider_1.AbstractProvider {
|
|
9
|
+
constructor(cfg) {
|
|
10
|
+
super(cfg, "slack");
|
|
11
|
+
this.client = new SlackDriver_1.SlackDriver(cfg);
|
|
12
|
+
}
|
|
13
|
+
getDefaultScopes() {
|
|
14
|
+
return ["openid", "profile", "email"];
|
|
15
|
+
}
|
|
16
|
+
buildAuthorizeUrl(state, _pkce) {
|
|
17
|
+
return this.client.getAuthorizationUrl(state, this.formatScopes());
|
|
18
|
+
}
|
|
19
|
+
fetchAccessToken(code, _ctx) {
|
|
20
|
+
return this.client.exchangeAuthorizationCode(code);
|
|
21
|
+
}
|
|
22
|
+
extractAccessToken(tokens) {
|
|
23
|
+
if (tokens.ok === false) {
|
|
24
|
+
const msg = typeof tokens.error === "string" ? tokens.error : "Slack token error";
|
|
25
|
+
throw new SocialiteAuthError_1.SocialiteAuthError(msg, "slack");
|
|
26
|
+
}
|
|
27
|
+
const t = tokens.access_token;
|
|
28
|
+
return typeof t === "string" ? t : null;
|
|
29
|
+
}
|
|
30
|
+
fetchUserFromToken(accessToken) {
|
|
31
|
+
return this.client.getUser(accessToken);
|
|
32
|
+
}
|
|
33
|
+
mapUser(raw) {
|
|
34
|
+
return SocialUser_1.SocialUser.fromSlack(raw);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.SlackProvider = SlackProvider;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { OAuthAuthorizeContext, OAuthProviderConfig } from "../../types";
|
|
2
|
+
export declare class TwitterDriver {
|
|
3
|
+
private readonly cfg;
|
|
4
|
+
constructor(cfg: OAuthProviderConfig);
|
|
5
|
+
getAuthorizationUrl(state: string, scope: string, pkce: OAuthAuthorizeContext): string;
|
|
6
|
+
exchangeAuthorizationCode(code: string, codeVerifier: string): Promise<Record<string, unknown>>;
|
|
7
|
+
getUser(accessToken: string): Promise<Record<string, unknown>>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=TwitterDriver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwitterDriver.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Socialite/Drivers/twitter/TwitterDriver.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,mBAAmB;IAErD,mBAAmB,CACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,qBAAqB,GAC1B,MAAM;IAaH,yBAAyB,CAC7B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA4B7B,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAarE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TwitterDriver = void 0;
|
|
4
|
+
const Http_1 = require("../../../Http");
|
|
5
|
+
const constant_1 = require("../../constant");
|
|
6
|
+
const SocialiteAuthError_1 = require("../../../Error/SocialiteAuthError/SocialiteAuthError");
|
|
7
|
+
class TwitterDriver {
|
|
8
|
+
constructor(cfg) {
|
|
9
|
+
this.cfg = cfg;
|
|
10
|
+
}
|
|
11
|
+
getAuthorizationUrl(state, scope, pkce) {
|
|
12
|
+
const params = new URLSearchParams({
|
|
13
|
+
response_type: "code",
|
|
14
|
+
client_id: this.cfg.clientId,
|
|
15
|
+
redirect_uri: this.cfg.redirectUri,
|
|
16
|
+
scope,
|
|
17
|
+
state,
|
|
18
|
+
code_challenge: pkce.codeChallenge,
|
|
19
|
+
code_challenge_method: pkce.codeChallengeMethod,
|
|
20
|
+
});
|
|
21
|
+
return `${constant_1.TWITTER_AUTHORIZE}?${params.toString()}`;
|
|
22
|
+
}
|
|
23
|
+
async exchangeAuthorizationCode(code, codeVerifier) {
|
|
24
|
+
const basic = Buffer.from(`${encodeURIComponent(this.cfg.clientId)}:${encodeURIComponent(this.cfg.clientSecret)}`).toString("base64");
|
|
25
|
+
Http_1.Http.reset().withHeaders({
|
|
26
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
27
|
+
Authorization: `Basic ${basic}`,
|
|
28
|
+
});
|
|
29
|
+
const { data } = await Http_1.Http.post(constant_1.TWITTER_TOKEN, new URLSearchParams({
|
|
30
|
+
grant_type: "authorization_code",
|
|
31
|
+
code,
|
|
32
|
+
redirect_uri: this.cfg.redirectUri,
|
|
33
|
+
code_verifier: codeVerifier,
|
|
34
|
+
}).toString());
|
|
35
|
+
if (typeof data.token_type !== "string") {
|
|
36
|
+
const msg = typeof data.error_description === "string"
|
|
37
|
+
? data.error_description
|
|
38
|
+
: data.error || "Token exchange failed";
|
|
39
|
+
throw new SocialiteAuthError_1.SocialiteAuthError(String(msg), "twitter");
|
|
40
|
+
}
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
async getUser(accessToken) {
|
|
44
|
+
Http_1.Http.reset()
|
|
45
|
+
.withQueryParameters({
|
|
46
|
+
"user.fields": "profile_image_url,name,username",
|
|
47
|
+
})
|
|
48
|
+
.withHeaders({ Authorization: `Bearer ${accessToken}` });
|
|
49
|
+
const { data } = await Http_1.Http.get(constant_1.TWITTER_USER_ME);
|
|
50
|
+
const u = data?.data;
|
|
51
|
+
if (!u || typeof u !== "object") {
|
|
52
|
+
throw new SocialiteAuthError_1.SocialiteAuthError("Twitter did not return user data.", "twitter");
|
|
53
|
+
}
|
|
54
|
+
return u;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.TwitterDriver = TwitterDriver;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AbstractProvider } from "../../AbstractProvider";
|
|
2
|
+
import { SocialUser } from "../../SocialUser";
|
|
3
|
+
import type { OAuthAuthorizeContext, OAuthProviderConfig } from "../../types";
|
|
4
|
+
export declare class TwitterProvider extends AbstractProvider {
|
|
5
|
+
private readonly client;
|
|
6
|
+
constructor(cfg: OAuthProviderConfig);
|
|
7
|
+
protected requiresPkce(): boolean;
|
|
8
|
+
getDefaultScopes(): string[];
|
|
9
|
+
buildAuthorizeUrl(state: string, pkce?: OAuthAuthorizeContext): string;
|
|
10
|
+
fetchAccessToken(code: string, ctx?: {
|
|
11
|
+
codeVerifier?: string;
|
|
12
|
+
}): Promise<Record<string, unknown>>;
|
|
13
|
+
fetchUserFromToken(accessToken: string): Promise<Record<string, unknown>>;
|
|
14
|
+
mapUser(raw: Record<string, unknown>): SocialUser;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=TwitterProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwitterProvider.d.ts","sourceRoot":"","sources":["../../../../../jcc-express-mvc/lib/Socialite/Drivers/twitter/TwitterProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,qBAAa,eAAgB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,GAAG,EAAE,mBAAmB;IAKpC,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC,gBAAgB,IAAI,MAAM,EAAE;IAI5B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,qBAAqB,GAAG,MAAM;IActE,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAYnC,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIzE,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAGlD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TwitterProvider = void 0;
|
|
4
|
+
const AbstractProvider_1 = require("../../AbstractProvider");
|
|
5
|
+
const TwitterDriver_1 = require("./TwitterDriver");
|
|
6
|
+
const SocialUser_1 = require("../../SocialUser");
|
|
7
|
+
const SocialiteAuthError_1 = require("../../../Error/SocialiteAuthError/SocialiteAuthError");
|
|
8
|
+
class TwitterProvider extends AbstractProvider_1.AbstractProvider {
|
|
9
|
+
constructor(cfg) {
|
|
10
|
+
super(cfg, "twitter");
|
|
11
|
+
this.client = new TwitterDriver_1.TwitterDriver(cfg);
|
|
12
|
+
}
|
|
13
|
+
requiresPkce() {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
getDefaultScopes() {
|
|
17
|
+
return ["tweet.read", "users.read", "offline.access"];
|
|
18
|
+
}
|
|
19
|
+
buildAuthorizeUrl(state, pkce) {
|
|
20
|
+
if (!pkce) {
|
|
21
|
+
throw new SocialiteAuthError_1.SocialiteAuthError("Twitter OAuth 2 requires PKCE (internal error).", "twitter");
|
|
22
|
+
}
|
|
23
|
+
return this.client.getAuthorizationUrl(state, this.formatScopes(), pkce);
|
|
24
|
+
}
|
|
25
|
+
fetchAccessToken(code, ctx) {
|
|
26
|
+
if (!ctx?.codeVerifier) {
|
|
27
|
+
return Promise.reject(new SocialiteAuthError_1.SocialiteAuthError("Twitter requires a PKCE code verifier.", "twitter"));
|
|
28
|
+
}
|
|
29
|
+
return this.client.exchangeAuthorizationCode(code, ctx.codeVerifier);
|
|
30
|
+
}
|
|
31
|
+
fetchUserFromToken(accessToken) {
|
|
32
|
+
return this.client.getUser(accessToken);
|
|
33
|
+
}
|
|
34
|
+
mapUser(raw) {
|
|
35
|
+
return SocialUser_1.SocialUser.fromTwitter(raw);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.TwitterProvider = TwitterProvider;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized user profile from an OAuth provider (identity only).
|
|
3
|
+
* Provider access tokens are not stored or exposed here — handle app auth separately.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SocialUser {
|
|
6
|
+
private id;
|
|
7
|
+
private email;
|
|
8
|
+
private name;
|
|
9
|
+
private avatar;
|
|
10
|
+
private raw;
|
|
11
|
+
constructor(p: {
|
|
12
|
+
id: string;
|
|
13
|
+
email: string;
|
|
14
|
+
name: string;
|
|
15
|
+
avatar: string;
|
|
16
|
+
raw: Record<string, unknown>;
|
|
17
|
+
});
|
|
18
|
+
getId(): string;
|
|
19
|
+
getName(): string;
|
|
20
|
+
getEmail(): string;
|
|
21
|
+
getAvatar(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Original provider userinfo / profile payload (no OAuth tokens).
|
|
24
|
+
*/
|
|
25
|
+
getRaw(): Record<string, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Plain object for JSON / your own session — profile fields only.
|
|
28
|
+
*/
|
|
29
|
+
toPlainObject(): {
|
|
30
|
+
id: string;
|
|
31
|
+
email: string;
|
|
32
|
+
name: string;
|
|
33
|
+
avatar: string;
|
|
34
|
+
};
|
|
35
|
+
static fromGoogle(raw: Record<string, unknown>): SocialUser;
|
|
36
|
+
static fromGitHub(raw: Record<string, unknown>): SocialUser;
|
|
37
|
+
static fromFacebook(raw: Record<string, unknown>): SocialUser;
|
|
38
|
+
static fromGitLab(raw: Record<string, unknown>): SocialUser;
|
|
39
|
+
static fromTwitter(raw: Record<string, unknown>): SocialUser;
|
|
40
|
+
static fromSlack(raw: Record<string, unknown>): SocialUser;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=SocialUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocialUser.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Socialite/SocialUser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAA0B;gBAEzB,CAAC,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC9B;IAQD,KAAK;IAIL,OAAO;IAIP,QAAQ;IAIR,SAAS;IAIT;;OAEG;IACH,MAAM;IAIN;;OAEG;IACH,aAAa;;;;;;IAUb,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAW3D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAY3D,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAiB7D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAY3D,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;IAY5D,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU;CAU3D"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SocialUser = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Normalized user profile from an OAuth provider (identity only).
|
|
6
|
+
* Provider access tokens are not stored or exposed here — handle app auth separately.
|
|
7
|
+
*/
|
|
8
|
+
class SocialUser {
|
|
9
|
+
constructor(p) {
|
|
10
|
+
this.id = p.id;
|
|
11
|
+
this.email = p.email;
|
|
12
|
+
this.name = p.name;
|
|
13
|
+
this.avatar = p.avatar;
|
|
14
|
+
this.raw = p.raw;
|
|
15
|
+
}
|
|
16
|
+
getId() {
|
|
17
|
+
return this.id;
|
|
18
|
+
}
|
|
19
|
+
getName() {
|
|
20
|
+
return this.name;
|
|
21
|
+
}
|
|
22
|
+
getEmail() {
|
|
23
|
+
return this.email;
|
|
24
|
+
}
|
|
25
|
+
getAvatar() {
|
|
26
|
+
return this.avatar;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Original provider userinfo / profile payload (no OAuth tokens).
|
|
30
|
+
*/
|
|
31
|
+
getRaw() {
|
|
32
|
+
return this.raw;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Plain object for JSON / your own session — profile fields only.
|
|
36
|
+
*/
|
|
37
|
+
toPlainObject() {
|
|
38
|
+
return {
|
|
39
|
+
...this.raw,
|
|
40
|
+
id: this.id,
|
|
41
|
+
email: this.email,
|
|
42
|
+
name: this.name,
|
|
43
|
+
avatar: this.avatar,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
static fromGoogle(raw) {
|
|
47
|
+
const id = String(raw.sub ?? raw.id ?? "");
|
|
48
|
+
return new SocialUser({
|
|
49
|
+
id,
|
|
50
|
+
email: raw.email ?? "",
|
|
51
|
+
name: raw.name ?? "",
|
|
52
|
+
avatar: raw.picture ?? "",
|
|
53
|
+
raw,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
static fromGitHub(raw) {
|
|
57
|
+
const id = String(raw.id ?? "");
|
|
58
|
+
const login = raw.login;
|
|
59
|
+
return new SocialUser({
|
|
60
|
+
id,
|
|
61
|
+
email: raw.email ?? "",
|
|
62
|
+
name: raw.name || login || id,
|
|
63
|
+
avatar: raw.avatar_url ?? "",
|
|
64
|
+
raw,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
static fromFacebook(raw) {
|
|
68
|
+
const id = String(raw.id ?? "");
|
|
69
|
+
let avatar = "";
|
|
70
|
+
const picture = raw.picture;
|
|
71
|
+
if (picture && typeof picture === "object" && picture !== null) {
|
|
72
|
+
const data = picture.data;
|
|
73
|
+
avatar = data?.url ?? "";
|
|
74
|
+
}
|
|
75
|
+
return new SocialUser({
|
|
76
|
+
id,
|
|
77
|
+
email: raw.email ?? "",
|
|
78
|
+
name: raw.name ?? "",
|
|
79
|
+
avatar,
|
|
80
|
+
raw,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
static fromGitLab(raw) {
|
|
84
|
+
const id = String(raw.id ?? "");
|
|
85
|
+
const username = raw.username;
|
|
86
|
+
return new SocialUser({
|
|
87
|
+
id,
|
|
88
|
+
email: raw.email ?? "",
|
|
89
|
+
name: raw.name || username || id,
|
|
90
|
+
avatar: raw.avatar_url ?? "",
|
|
91
|
+
raw,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
static fromTwitter(raw) {
|
|
95
|
+
const id = String(raw.id ?? "");
|
|
96
|
+
const handle = raw.username;
|
|
97
|
+
return new SocialUser({
|
|
98
|
+
id,
|
|
99
|
+
email: "",
|
|
100
|
+
name: raw.name || handle || id,
|
|
101
|
+
avatar: raw.profile_image_url ?? "",
|
|
102
|
+
raw,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
static fromSlack(raw) {
|
|
106
|
+
const id = String(raw.sub ?? raw.user_id ?? "");
|
|
107
|
+
return new SocialUser({
|
|
108
|
+
id,
|
|
109
|
+
email: raw.email ?? "",
|
|
110
|
+
name: raw.name ?? id,
|
|
111
|
+
avatar: raw.picture ?? "",
|
|
112
|
+
raw,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.SocialUser = SocialUser;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractProvider } from "./AbstractProvider";
|
|
2
|
+
/**
|
|
3
|
+
* Laravel-style entrypoint:
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* Socialite.driver('github').scopes('read:user', 'public_repo').redirect();
|
|
7
|
+
* const u = await Socialite.driver('github').user();
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare class Socialite {
|
|
11
|
+
static driver(name: string): AbstractProvider;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=Socialite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Socialite.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Socialite/Socialite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAStD;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;CAsB9C"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Socialite = void 0;
|
|
4
|
+
const config_1 = require("./config");
|
|
5
|
+
const GoogleProvider_1 = require("./Drivers/google/GoogleProvider");
|
|
6
|
+
const GitHubProvider_1 = require("./Drivers/github/GitHubProvider");
|
|
7
|
+
const FacebookProvider_1 = require("./Drivers/facebook/FacebookProvider");
|
|
8
|
+
const GitLabProvider_1 = require("./Drivers/gitlab/GitLabProvider");
|
|
9
|
+
const TwitterProvider_1 = require("./Drivers/twitter/TwitterProvider");
|
|
10
|
+
const SlackProvider_1 = require("./Drivers/slack/SlackProvider");
|
|
11
|
+
/**
|
|
12
|
+
* Laravel-style entrypoint:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* Socialite.driver('github').scopes('read:user', 'public_repo').redirect();
|
|
16
|
+
* const u = await Socialite.driver('github').user();
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
class Socialite {
|
|
20
|
+
static driver(name) {
|
|
21
|
+
const key = name.toLowerCase();
|
|
22
|
+
const cfg = (0, config_1.resolveSocialiteConfig)(key);
|
|
23
|
+
switch (key) {
|
|
24
|
+
case "google":
|
|
25
|
+
return new GoogleProvider_1.GoogleProvider(cfg);
|
|
26
|
+
case "github":
|
|
27
|
+
return new GitHubProvider_1.GitHubProvider(cfg);
|
|
28
|
+
case "facebook":
|
|
29
|
+
return new FacebookProvider_1.FacebookProvider(cfg);
|
|
30
|
+
case "gitlab":
|
|
31
|
+
return new GitLabProvider_1.GitLabProvider(cfg);
|
|
32
|
+
case "twitter":
|
|
33
|
+
return new TwitterProvider_1.TwitterProvider(cfg);
|
|
34
|
+
case "slack":
|
|
35
|
+
return new SlackProvider_1.SlackProvider(cfg);
|
|
36
|
+
default:
|
|
37
|
+
throw new Error(`Socialite driver [${name}] is not supported. Supported: google, github, facebook, gitlab, twitter, slack.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.Socialite = Socialite;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ServiceProvider } from "../Providers/ServiceProvider";
|
|
2
|
+
/**
|
|
3
|
+
* Optional registration — Socialite is primarily static (`Socialite.driver()`).
|
|
4
|
+
* Bind for container resolution if you prefer `app.make("Socialite")`.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SocialiteProvider extends ServiceProvider {
|
|
7
|
+
register(): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=SocialiteProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocialiteProvider.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Socialite/SocialiteProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IAC7C,QAAQ,IAAI,IAAI;CAGxB"}
|