/
AuthService.js
71 lines (61 loc) · 2.12 KB
/
AuthService.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
import { Log, User, UserManager } from 'oidc-client';
export class AuthService {
userManager;
constructor() {
const settings = {
authority: `${process.env.REACT_APP_IDENTITY_SERVER_URI}`,
client_id: `${process.env.REACT_APP_CLIENT_ID}`,
redirect_uri: `${process.env.REACT_APP_URI}/authentication/callback`,
silent_redirect_uri: `${process.env.REACT_APP_URI}/authentication/silentCallback`,
post_logout_redirect_uri: `${process.env.REACT_APP_URI}/`,
response_type: 'id_token token',
scope: 'openid profile ReactAdvantageApi'
};
this.userManager = new UserManager(settings);
Log.logger = console;
Log.level = Log.INFO;
}
getUser() {
return this.userManager.getUser();
}
login() {
return this.userManager.signinRedirect();
}
renewToken() {
return this.userManager.signinSilent();
}
logout() {
return this.userManager.signoutRedirect();
}
ensureAuthorized() {
return this.getUser().then(user => {
return new Promise((resolve, reject) => {
if (user && user.access_token) {
resolve(user);
//todo after api call:
// .catch(error => {
// if (error.response.status === 401) {
// this.renewToken().then(renewedUser => {
// //repeat api call with renewedUser
// });
// }
// throw error;
// });
} else if (user) {
this.renewToken().then(renewedUser => {
resolve(renewedUser);
});
} else {
reject();
this.login();
}
});
});
}
signinRedirectCallback() {
return this.userManager.signinRedirectCallback();
}
signinSilentCallback() {
return this.userManager.signinSilentCallback();
}
}