diff --git a/src/index.ts b/src/index.ts
index a857d9b9c776c61178103c57dc71b357343f87e2..d4d4e03a90526f68b863acfb68616cf0268762d4 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -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
diff --git a/src/middlewares/auth/authenticated.ts b/src/middlewares/auth/authenticated.ts
index d5f7ea0e9fe2bdecbd23a16f6c7fb3188e57cbf6..139a50d949d0b81a8c0f4ca2d5b5f3fbfbb4fb67 100644
--- a/src/middlewares/auth/authenticated.ts
+++ b/src/middlewares/auth/authenticated.ts
@@ -1,12 +1,12 @@
-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
diff --git a/src/middlewares/auth/complete.ts b/src/middlewares/auth/complete.ts
index dedc5c8c0d95f6611bc2731264f4e851c15128dd..2f51c83720611deeaed408fdcf3c4abd7f1a7d74 100644
--- a/src/middlewares/auth/complete.ts
+++ b/src/middlewares/auth/complete.ts
@@ -1,29 +1,33 @@
-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
diff --git a/src/middlewares/auth/login.ts b/src/middlewares/auth/login.ts
index 356629f10a2f8bda13639201a837cdf7416b6fcd..a1efd4d702106c65512c6b87c4734fcfd9ec279d 100644
--- a/src/middlewares/auth/login.ts
+++ b/src/middlewares/auth/login.ts
@@ -1,13 +1,13 @@
-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
diff --git a/src/middlewares/auth/logout.ts b/src/middlewares/auth/logout.ts
index 791772f76771a64ddd2b04952bdeaa7f65afabda..9367d85fe4d7d7c23604fc1f62ff5f05aa2c5e84 100644
--- a/src/middlewares/auth/logout.ts
+++ b/src/middlewares/auth/logout.ts
@@ -1,8 +1,8 @@
-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
diff --git a/src/middlewares/auth/refreshToken.ts b/src/middlewares/auth/refreshToken.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1d857bb151626e418365d095e4e667ec4a183450
--- /dev/null
+++ b/src/middlewares/auth/refreshToken.ts
@@ -0,0 +1,18 @@
+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
diff --git a/src/models/user.interface.ts b/src/models/user.interface.ts
new file mode 100644
index 0000000000000000000000000000000000000000..50df6043ba1d9fc5ff826c56db1797b6c21b4014
--- /dev/null
+++ b/src/models/user.interface.ts
@@ -0,0 +1,8 @@
+import { Token } from "simple-oauth2";
+
+export interface User{
+    email: string,
+    name: string,
+    id: string,
+    token: Token,
+}
\ No newline at end of file
diff --git a/src/routes/auth.ts b/src/routes/auth.ts
index b930250fa6704fd6b43c0f1191e7ff25326c00e6..a11e4dcb83c1338fe4396532708717ec36c83013 100644
--- a/src/routes/auth.ts
+++ b/src/routes/auth.ts
@@ -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
diff --git a/src/utils/declarations/session.d.ts b/src/utils/declarations/session.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..70023005e094f05efb4eee9ec4d5775e0473f4b1
--- /dev/null
+++ b/src/utils/declarations/session.d.ts
@@ -0,0 +1,10 @@
+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
diff --git a/tsconfig.json b/tsconfig.json
index 69ae72cc7d2a5da05e1661fbfb13154a90699f47..8b2d85389cfbd32bd092a3f62fec934b340519bc 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,8 @@
 {
   "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",