-
Notifications
You must be signed in to change notification settings - Fork 0
/
Auth.js
72 lines (62 loc) · 1.96 KB
/
Auth.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/* eslint-disable */
import auth0 from 'auth0-js';
import router from '../router';
export default class Auth {
auth0 = new auth0.WebAuth({
domain: AUTH0_DOMAIN, // e.g kabiyesi.auth0.com
clientID: AUTH0_CLIENT_ID, // e.g i473732832832cfgajHYEUqiqwq
redirectUri: CALLBACK_URL, // e.g http://localhost:8080/callback
audience: AUTH0_API_AUDIENCE, // e.g. https://meetupapi.com
responseType: 'token id_token',
scope: 'openid'
});
constructor() {
this.login = this.login.bind(this);
this.handleAuthentication = this.handleAuthentication.bind(this);
this.logout = this.logout.bind(this);
}
handleAuthentication() {
this.auth0.parseHash((err, authResult) => {
if (authResult && authResult.accessToken && authResult.idToken) {
this.setSession(authResult);
router.replace('/');
} else if (err) {
router.replace('/');
}
})
}
setSession(authResult) {
// Set the time that the access token will expire at
const expiresAt = JSON.stringify(authResult.expiresIn * 1000 + new Date().getTime());
localStorage.setItem('access_token', authResult.accessToken);
localStorage.setItem('id_token', authResult.idToken);
localStorage.setItem('expires_at', expiresAt);
}
requireAuth(to, from, next) {
if (! (new Auth).isAuthenticated()) {
next({
path: '/',
query: { redirect: to.fullPath }
});
} else {
next();
}
}
login() {
this.auth0.authorize();
}
logout() {
// Clear access token and ID token from local storage
localStorage.removeItem('access_token');
localStorage.removeItem('id_token');
localStorage.removeItem('expires_at');
// navigate to the landing page route
router.go('/');
}
isAuthenticated() {
// Check whether the current time is past the
// access token's expiry time
const expiresAt = JSON.parse(localStorage.getItem('expires_at'));
return new Date().getTime() < expiresAt;
}
}