Skip to content
Snippets Groups Projects
Commit 9802d973 authored by Bodor Máté's avatar Bodor Máté
Browse files

Create oauth2 authentication with session

parent ab1b5aa3
No related branches found
No related tags found
2 merge requests!4Feature/authsch integration,!3Feature/authsch integration
......@@ -12,10 +12,15 @@ app.use(expressSession({
secret: process.env.SESSION_SECRET || "alma",
resave: false,
saveUninitialized: true,
cookie: { secure: true }
cookie: { secure: false }
}));
app.get("/", (req: Request, res: Response) => res.send("Hel World!"));
app.get("/", (req: Request, res: Response) => {
let message = "World!";
if(req.session!.user)
message = req.session!.user!.sn || "World!";
res.send( "Hello " + message)
});
// Register routes
authRoute(app);
......
import {Request, Response, NextFunction} from "express";
const authenticated = () => (req : Request, res : Response, next: NextFunction ) =>{
if(req.session!.user)
next();
res.status(403);
res.json({message: "You have to login to see this page"});
}
export default authenticated;
\ No newline at end of file
import { Request, Response } from 'express';
import {oauth2, scope} from '../../utils/auth'
import axios from "axios";
const complete = () => async (req: Request, res: Response) => {
const tokenConfig = {
code: req.query.code,
scope: scope,
redirect_uri: ""
};
try {
const result = await oauth2().authorizationCode.getToken(tokenConfig);
const token = oauth2().accessToken.create(result);
await axios.get(`https://auth.sch.bme.hu/api/profile/?access_token=${token.token.access_token}`)
.then( (response) => {
req.session!.user = response.data;
})
.catch(function (error) {
console.log(error);
});
res.redirect('/');
} catch (error) {
console.log('Access Token Error', error.message);
}
};
export default complete;
\ No newline at end of file
import { Request, Response } from 'express';
import {oauth2, scope} from '../../utils/auth'
const authorizationUri = oauth2().authorizationCode.authorizeURL({
scope: scope,
});
const login = () => (req: Request, res: Response) => res.redirect(authorizationUri);
export default login;
\ No newline at end of file
import { Request, Response } from 'express';
const logout = () => (req : Request, res : Response) =>{
console.log(req.session!.user);
req.session!.destroy(() => console.log("user logged out."));
res.redirect("/");
}
export default logout;
\ No newline at end of file
import { Application } from 'express';
import login from '../middlewares/auth/login';
import complete from '../middlewares/auth/complete';
import logout from '../middlewares/auth/logout';
import authenticated from '../middlewares/auth/authenticated'
const authRout = (app: Application): void => {
app.get('/login', login() );
app.get('/complete', complete() );
app.get('/logout', authenticated(), logout() );
}
export default authRout;
\ No newline at end of file
import simpleOauth2 from "simple-oauth2";
const oauth2 = () => simpleOauth2.create(
{
client: {
id: process.env.AUTH_ID || "",
secret: process.env.AUTH_SECRET_KEY || ""
},
auth: {
tokenHost: 'https://auth.sch.bme.hu',
tokenPath: '/oauth2/token',
authorizePath: '/site/login'
}
}
);
const scope : string[] = ['basic', 'mail', 'sn', 'givenName']
export {oauth2, scope};
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment