more fixes
This commit is contained in:
@@ -26,14 +26,14 @@
|
||||
"winston": "^3.2.1",
|
||||
"yn": "^4.0.0",
|
||||
"passport": "0.4.1",
|
||||
"passport-google-oauth20": "2.0.0"
|
||||
"passport-google-oauth20": "2.0.0",
|
||||
"@types/passport": "1.0.3",
|
||||
"@types/passport-google-oauth20": "2.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@backstage/cli": "^0.1.1-alpha.5",
|
||||
"jest-fetch-mock": "^3.0.3",
|
||||
"tsc-watch": "^4.2.3",
|
||||
"@types/passport": "1.0.3",
|
||||
"@types/passport-google-oauth20": "2.0.3"
|
||||
"tsc-watch": "^4.2.3"
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
|
||||
@@ -17,13 +17,17 @@
|
||||
import passport from 'passport';
|
||||
import express from 'express';
|
||||
import { Strategy as GoogleStrategy } from 'passport-google-oauth20';
|
||||
import { AuthProvider, AuthProviderRouteHandlers } from './../types';
|
||||
import {
|
||||
AuthProvider,
|
||||
AuthProviderRouteHandlers,
|
||||
AuthProviderConfig,
|
||||
} from './../types';
|
||||
import { postMessageResponse } from './../utils';
|
||||
|
||||
export class GoogleAuthProvider
|
||||
implements AuthProvider, AuthProviderRouteHandlers {
|
||||
private readonly providerConfig: any;
|
||||
constructor(providerConfig: any) {
|
||||
private readonly providerConfig: AuthProviderConfig;
|
||||
constructor(providerConfig: AuthProviderConfig) {
|
||||
this.providerConfig = providerConfig;
|
||||
}
|
||||
|
||||
@@ -54,7 +58,10 @@ export class GoogleAuthProvider
|
||||
}
|
||||
|
||||
logout(_req: express.Request, res: express.Response) {
|
||||
return res.send('logout!');
|
||||
return new Promise((resolve) => {
|
||||
res.send('logout!');
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
|
||||
strategy(): passport.Strategy {
|
||||
|
||||
@@ -15,7 +15,11 @@
|
||||
*/
|
||||
|
||||
import Router from 'express-promise-router';
|
||||
import { AuthProviderRouteHandlers, AuthProviderFactories } from './types';
|
||||
import {
|
||||
AuthProviderRouteHandlers,
|
||||
AuthProviderFactories,
|
||||
AuthProviderConfig,
|
||||
} from './types';
|
||||
|
||||
import { GoogleAuthProvider } from './google/provider';
|
||||
|
||||
@@ -34,7 +38,7 @@ export const defaultRouter = (provider: AuthProviderRouteHandlers) => {
|
||||
return router;
|
||||
};
|
||||
|
||||
export const makeProvider = (config: any) => {
|
||||
export const makeProvider = (config: AuthProviderConfig) => {
|
||||
const providerId = config.provider;
|
||||
const ProviderImpl = providerFactories[providerId];
|
||||
if (!ProviderImpl) {
|
||||
|
||||
@@ -17,6 +17,16 @@
|
||||
import express from 'express';
|
||||
import passport from 'passport';
|
||||
|
||||
export type AuthProviderConfig = {
|
||||
provider: string;
|
||||
options: any;
|
||||
};
|
||||
|
||||
export interface AuthProvider {
|
||||
strategy(): passport.Strategy;
|
||||
router?(): express.Router;
|
||||
}
|
||||
|
||||
export interface AuthProviderRouteHandlers {
|
||||
start(
|
||||
req: express.Request,
|
||||
@@ -27,7 +37,7 @@ export interface AuthProviderRouteHandlers {
|
||||
req: express.Request,
|
||||
res: express.Response,
|
||||
next: express.NextFunction,
|
||||
): express.Response<any>;
|
||||
): Promise<any>;
|
||||
refresh?(
|
||||
req: express.Request,
|
||||
res: express.Response,
|
||||
@@ -37,11 +47,7 @@ export interface AuthProviderRouteHandlers {
|
||||
req: express.Request,
|
||||
res: express.Response,
|
||||
next: express.NextFunction,
|
||||
): express.Response<any>;
|
||||
}
|
||||
export interface AuthProvider {
|
||||
strategy(): passport.Strategy;
|
||||
router?(): express.Router;
|
||||
): Promise<any>;
|
||||
}
|
||||
|
||||
export type AuthProviderFactories = {
|
||||
@@ -53,7 +59,7 @@ export type AuthProviderFactories = {
|
||||
export type AuthInfo = {
|
||||
profile: passport.Profile;
|
||||
accessToken: string;
|
||||
expiresAt?: number;
|
||||
expiresInSeconds?: number;
|
||||
};
|
||||
|
||||
export type AuthResponse =
|
||||
|
||||
@@ -30,6 +30,7 @@ export async function createRouter(
|
||||
): Promise<express.Router> {
|
||||
const router = Router();
|
||||
const logger = options.logger.child({ plugin: 'auth' });
|
||||
const providerRouters: { [key: string]: express.Router } = {};
|
||||
|
||||
// configure all the providers
|
||||
for (const providerConfig of providers) {
|
||||
@@ -38,7 +39,7 @@ export async function createRouter(
|
||||
);
|
||||
logger.info(`Configuring provider: ${providerId}`);
|
||||
passport.use(strategy);
|
||||
router.use(`/${providerId}`, providerRouter);
|
||||
providerRouters[providerId] = providerRouter;
|
||||
}
|
||||
|
||||
passport.serializeUser((user, done) => {
|
||||
@@ -52,5 +53,12 @@ export async function createRouter(
|
||||
router.use(passport.initialize());
|
||||
router.use(passport.session());
|
||||
|
||||
for (const providerId in providerRouters) {
|
||||
if (providerRouters.hasOwnProperty(providerId)) {
|
||||
const providerRouter = providerRouters[providerId];
|
||||
router.use(`/${providerId}`, providerRouter);
|
||||
}
|
||||
}
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user