diff --git a/package-lock.json b/package-lock.json
index 397cd62b97aab5d3cff0e92fffb4576a9a040822..548b5ab25a66f107e3a4397df95d3523f888d942 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11202,6 +11202,11 @@
         }
       }
     },
+    "vue-crontab": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/vue-crontab/-/vue-crontab-0.0.4.tgz",
+      "integrity": "sha512-p9hPSLW145ubMSqLbkFTOlAgkjLHQlyipaFO14aSZgnzpar+p3RpQ0g/E/ZjImnzuvVz8Niykopy5+NfKk1LFQ=="
+    },
     "vue-eslint-parser": {
       "version": "7.1.0",
       "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz",
diff --git a/package.json b/package.json
index 901deca1328d23d51868b045cb54d1cc693075ba..0f1a024dbaff968fc930b7ce72e2cd85c4a42345 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
     "vee-validate": "^2.2.15",
     "vue": "^2.6.11",
     "vue-axios-cors": "^1.0.1",
+    "vue-crontab": "0.0.4",
     "vue-router": "^3.4.3",
     "vuex": "^3.5.1",
     "vuex-persistedstate": "^3.1.0"
diff --git a/src/components/Home.vue b/src/components/Home.vue
index a066f001709c11027db71c9613491095bcde65e8..596fc2fdcd9c38081354767485a283b557fde889 100644
--- a/src/components/Home.vue
+++ b/src/components/Home.vue
@@ -13,15 +13,50 @@ export default {
   components: {
     Courses
   },
+
+  created() {
+    //setInterval(() => this.isExpired(), 1000);
+    //this.isExpired();
+  },
+
   methods:{
 
+    isExpired(){
+      var d = new Date();
+      var n = d.valueOf();
+      const user = JSON.parse(localStorage.getItem('user'));
+
+      if (n > user.expiresIn){
+        this.$router.push('/login');
+        this.$parent.logout();
+      }
+/*
+      this.$store.dispatch('auth/isExpired', user).then(
+        (data) => {
+          //console.log("1:"+ data);
+          //console.log("2: "+this.$store.state.auth.status.isExpired);
+          /*
+          if (data === 0){
+            this.$router.push('/login');
+          } else {
+
+          }
+        },
+        error => {
+          console.log("error:\n");
+          console.log(error);
+        }
+      );
+*/
+    },
+
     logOut: function() {
       this.$store.dispatch('auth/logout');
       this.$router.push('/login');
     }
+  }
 
 
-  }
 }
 </script>
 
diff --git a/src/components/LogIn.vue b/src/components/LogIn.vue
index 4a1f3b8340ea9b9f6ad2fec982ffcb4c33ab4ca5..d1cbb97cd1ace8c4ce98ee7b808adc2e8f90696d 100644
--- a/src/components/LogIn.vue
+++ b/src/components/LogIn.vue
@@ -72,10 +72,7 @@ export default {
       reg: /^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/,
       password: "",
       passwordFieldType: 'password',
-      passwordToggleStyle: "password_toggle_img",
-
-      loading: false,
-      message: ''
+      passwordToggleStyle: "password_toggle_img"
 
     }
   },
@@ -97,10 +94,8 @@ export default {
 
     validate(){
       if (this.reg.test(this.username)) {
-        console.log("login")
         this.login()
       } else {
-        console.log("wrong")
         this.wrongEmail()
       }
     },
@@ -112,7 +107,6 @@ export default {
     login() {
       this.$validator.validateAll().then(isValid => {
         if (!isValid) {
-          this.loading = false;
           return;
         }
 
@@ -121,13 +115,6 @@ export default {
               () => {
                 this.$router.push('/home');
                 this.$parent.update();
-              },
-              error => {
-                this.loading = false;
-                this.message =
-                    (error.response && error.response.data) ||
-                    error.message ||
-                    error.toString();
               }
           );
         }
diff --git a/src/components/SideMenu.vue b/src/components/SideMenu.vue
index 08f43f75f7fda6a8b04359079b40b86507d786ed..3e2d2b21fd7f0e3a2c9bdc7298aff07962a17562 100644
--- a/src/components/SideMenu.vue
+++ b/src/components/SideMenu.vue
@@ -37,9 +37,15 @@ export default {
 
   methods: {
     logOut: function() {
-      this.$store.dispatch('auth/logout');
-      this.$router.push('/login');
-      this.$parent.update();
+      this.$store.dispatch('auth/logout').then(
+          () => {
+            this.$router.push('/login');
+            this.$parent.update();
+          },
+          error => {
+            this.message = (error.response && error.response.data) || error.message || error.toString();
+          }
+      );
     }
   }
 }
diff --git a/src/components/Teachers.vue b/src/components/Teachers.vue
index a149235e7cd7134cb8554efbcedca4d7c66362dd..2a325c6f2c0cccf22dd16999370151f9675a3ace 100644
--- a/src/components/Teachers.vue
+++ b/src/components/Teachers.vue
@@ -1,12 +1,34 @@
 <template>
   <div class="content col-md-12">
-    Teachers
+    <h1>{{data}}</h1>
   </div>
 </template>
 
 <script>
 export default {
-  name: "Teachers"
+  name: "Teachers",
+  data(){
+    return{
+      data: "Hello World"
+    }
+  },
+
+  created() {
+    this.get();
+  },
+
+  methods:{
+      get(){
+        this.$store.dispatch('user/getHello').then(
+            () => {
+              this.data = this.$store.state.user.response;
+            },
+            error => {
+              this.message = (error.response && error.response.data) || error.message || error.toString();
+            }
+        );
+      }
+  }
 }
 </script>
 
diff --git a/src/services/auth-header.js b/src/services/auth-header.js
index 8641414928ebcf315ad9aefbfff2c0d525cb0c98..1d15951b4ad3d7f8472bbb84faab4fdc426ae005 100644
--- a/src/services/auth-header.js
+++ b/src/services/auth-header.js
@@ -1,9 +1,10 @@
 export default function authHeader() {
     let user = JSON.parse(localStorage.getItem('user'));
 
-    if (user && user.accessToken) {
-        return { Authorization: 'Bearer ' + user.accessToken };
+    if (user && user.idToken) {
+        return { Authorization: 'Bearer ' + user.idToken };
     } else {
-        return {};
+        console.log("Header fialure");
+        return {}
     }
 }
\ No newline at end of file
diff --git a/src/services/auth.service.js b/src/services/auth.service.js
index 3112058e3df7d47b68eda0309010544c8ba9ea34..a67d93d73415612ba8b62569bfcaa8dfdac3cdfe 100644
--- a/src/services/auth.service.js
+++ b/src/services/auth.service.js
@@ -12,9 +12,9 @@ class AuthService {
                 password: user.password
             })
             .then(response => {
-
                 if (response.data.idToken) {
                     localStorage.setItem('user', JSON.stringify(response.data));
+                    localStorage.setItem('cronJob', 0);
                 }
 
                 return response.data;
@@ -32,6 +32,12 @@ class AuthService {
             password: user.password
         },{ headers: authHeader() });
     }
+
+    isExpired(user) {
+        return axios.post(API_URL + 'isExpired', {
+                expiresIn: user.expiresIn
+        });
+    }
 }
 
 export default new AuthService();
diff --git a/src/services/user.service.js b/src/services/user.service.js
index 3c4a17dcb8d1edc4b18b84aa2aa514bb3a548a1f..34ffbd9ea1340bcd92f3ad68f7d740bc1b9a9499 100644
--- a/src/services/user.service.js
+++ b/src/services/user.service.js
@@ -1,25 +1,18 @@
 import axios from 'axios';
-import authHeader from './auth-header';
+import authHeader from "@/services/auth-header";
 
 const API_URL = 'http://localhost:9192/';
 
 class UserService {
 
-    getPublicContent() {
-        return axios.get(API_URL + 'hello');
-    }
-
-    getUserBoard() {
-        return axios.get(API_URL + 'user', { headers: authHeader() });
-    }
-
-    getModeratorBoard() {
-        return axios.get(API_URL + 'mod', { headers: authHeader() });
-    }
-
-    getAdminBoard() {
-        return "Hello"; //axios.get(API_URL + 'admin', { headers: authHeader() });
+    getContent() {
+        return axios
+            .get(API_URL + 'hello', {headers: authHeader() })
+            .then(response => {
+                return response.data;
+            });
     }
 }
 
+
 export default new UserService();
\ No newline at end of file
diff --git a/src/store/auth.module.js b/src/store/auth.module.js
index 6ba7445ceb3db943c5ccf8c0ddbdb8ff81e090bd..620a483e339b09d7a3116a3e00b656640b272727 100644
--- a/src/store/auth.module.js
+++ b/src/store/auth.module.js
@@ -2,9 +2,18 @@ import AuthService from '../services/auth.service';
 import User from "@/models/user";
 
 const user = JSON.parse(localStorage.getItem('user'));
-const initialState = user
-    ? { status: { loggedIn: true  }, user }
-    : { status: { loggedIn: false }, user: new User("", "", "") };
+const initialState =
+    user ? {
+        status: {
+            loggedIn: true
+        },
+        user
+    } : {
+        status: {
+            loggedIn: false
+        },
+        user: new User("", "", "")
+    };
 
 export const auth = {
     namespaced: true,
@@ -40,6 +49,19 @@ export const auth = {
                     return Promise.reject(error);
                 }
             );
+        },
+
+        isExpired({ commit }, user) {
+            return AuthService.isExpired(user).then(
+                response => {
+                    commit('isExpiredSuccess', response);
+                    return Promise.resolve(response);
+                },
+                error => {
+                    commit('isExpiredFailure');
+                    return Promise.reject(error);
+                }
+            );
         }
     },
 
@@ -61,6 +83,13 @@ export const auth = {
         },
         registerFailure(state) {
             state.status.loggedIn = false;
+        },
+        isExpiredSuccess(state, isExpired) {
+            state.status.isExpired = isExpired;
+        },
+        isExpiredFailure(state, isExpired) {
+            console.log("error state")
+            state.status.isExpired = isExpired;
         }
     }
 };
\ No newline at end of file
diff --git a/src/store/index.js b/src/store/index.js
index adbb163c9f3a9bb1bbe78b75865aae324564d89e..1ee6edf3338487f53338a847e9ea9471cb71d867 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -2,11 +2,13 @@ import Vue from 'vue';
 import Vuex from 'vuex';
 
 import { auth } from './auth.module';
+import { user } from './user.module';
 
 Vue.use(Vuex);
 
 export default new Vuex.Store({
     modules: {
-        auth
+        auth,
+        user
     }
 });
\ No newline at end of file
diff --git a/src/store/user.module.js b/src/store/user.module.js
new file mode 100644
index 0000000000000000000000000000000000000000..a1287ea30086cd0a17bc10f19019b367f52c3533
--- /dev/null
+++ b/src/store/user.module.js
@@ -0,0 +1,29 @@
+import UserService from '../services/user.service';
+
+const initialState = null;
+
+export const user = {
+    namespaced: true,
+    state: initialState,
+    actions: {
+
+        getHello({ commit }) {
+            return UserService.getContent().then(
+                response => {
+                    commit('getSuccess', response);
+                    return Promise.resolve(response);
+                },
+                error => {
+                    commit('loginFailure');
+                    return Promise.reject(error);
+                }
+            );
+        }
+    },
+
+    mutations: {
+        getSuccess(state, response) {
+            state.response = response;
+        }
+    }
+};
\ No newline at end of file