more fixes

This commit is contained in:
Raghunandan
2020-05-20 12:49:30 +02:00
parent 9113045c50
commit 9749d07be5
5 changed files with 43 additions and 18 deletions
+4 -4
View File
@@ -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 {
+6 -2
View File
@@ -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) {
+13 -7
View File
@@ -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 =
+9 -1
View File
@@ -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;
}