Skip to content
Snippets Groups Projects
Commit 81c6f79a authored by bmate711's avatar bmate711
Browse files

Merge branch 'dev' into 'feature/news_api'

# Conflicts:
#   src/index.ts
#   tsconfig.json
parents bec0016b ba214b32
No related branches found
No related tags found
2 merge requests!10Feature/12 dev auto deploy,!6Feature/news api
......@@ -26,23 +26,18 @@ const app: Application = express();
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(
expressSession({
secret: process.env.SESSION_SECRET || "alma",
resave: false,
saveUninitialized: true,
cookie: { secure: false }
})
);
app.use((req: Request, res: Response, next: NextFunction) => {
res.data = {};
next();
});
app.use(expressSession({
secret: process.env.SESSION_SECRET || "secret",
resave: false,
saveUninitialized: true,
cookie: { secure: false }
}));
app.get("/", (req: Request, res: Response) => {
let message = "World!";
if (req.session!.user) message = req.session!.user!.sn || "World!";
res.send("Hello " + message);
if(req.session!.user)
message = req.session!.user!.name || "World!";
res.send( "Hello " + message)
});
// Register routes
......
import {Request, Response, NextFunction} from "express";
const authenticated = () => (req : Request, res : Response, next: NextFunction ) =>{
if(req.session!.user)
next();
else{
res.status(403);
res.json({message: "You have to login to see this page"});
}
}
import {Request, Response, NextFunction} from "express";
const authenticated = () => (req : Request, res : Response, next: NextFunction ) =>{
if(req.session!.user)
next();
else{
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);
}
};
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 token = await oauth2().authorizationCode.getToken(tokenConfig);
await axios.get(`https://auth.sch.bme.hu/api/profile/?access_token=${token.access_token}`)
.then( (response) => {
req.session!.user = {
id: String(response.data.basic),
email: String(response.data.mail),
name: `${response.data.sn} ${response.data.givenName}` ,
token,
};
})
.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);
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) =>{
req.session!.destroy(() => console.log("user logged out."));
res.redirect("/");
}
import { Request, Response } from 'express';
const logout = () => (req : Request, res : Response) =>{
req.session!.destroy(() => console.log("user logged out."));
res.redirect("/");
}
export default logout;
\ No newline at end of file
import { Request, Response, NextFunction } from 'express';
import { oauth2 } from '../../utils/auth'
const refreshToken = () => async (req: Request, res: Response, next: NextFunction) => {
if (req.session && req.session.user) {
try{
let accessToken = oauth2().accessToken.create(req.session.user.token);
if (accessToken.expired(Number(process.env.AUTH_TOKEN_EXPIRATION_WINDOW_IN_SECONDS))) {
req.session.user.token = await accessToken.refresh().then(accessToken => accessToken.token);
}
}catch (error) {
console.log('Error refreshing access token: ', error.message);
}
}
next();
}
export default refreshToken;
\ No newline at end of file
import { Token } from "simple-oauth2";
export interface User{
email: string,
name: string,
id: string,
token: Token,
}
\ No newline at end of file
......@@ -2,9 +2,9 @@ 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'
import authenticated from '../middlewares/auth/authenticated';
const authRout = (app: Application): void => {
const authRoute = (app: Application): void => {
app.get('/login', login() );
app.get('/complete', complete() );
......@@ -12,4 +12,4 @@ import authenticated from '../middlewares/auth/authenticated'
app.get('/logout', authenticated(), logout() );
}
export default authRout;
\ No newline at end of file
export default authRoute;
\ No newline at end of file
import { AccessToken } from "simple-oauth2";
import { User } from 'src/models/user.interface';
declare global {
namespace Express {
export interface Session {
user: User | null;
}
}
}
\ No newline at end of file
{
"files": [
"./src/utils/declarations/response.d.ts",
"./src/utils/declarations/request.d.ts"
"./src/utils/declarations/request.d.ts",
"./src/utils/declarations/session.d.ts",
],
"compilerOptions": {
"module": "commonjs",
......
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