Update auth

This commit is contained in:
Mulia Nasution
2023-05-29 15:48:01 +07:00
parent e577788c80
commit eb3599b351
7 changed files with 163 additions and 124 deletions

View File

@@ -1,58 +1,54 @@
const defaultUser = {
email: 'titan@hadiyan.net',
avatarUrl: 'https://js.devexpress.com/Demos/WidgetsGallery/JSDemos/images/employees/06.png'
};
import * as Forge from 'node-forge'
import axios from 'axios'
import { useRouter } from 'vue-router'
const router = useRouter()
export default {
_user: defaultUser,
_user: null,
loggedIn() {
return !!this._user;
let user = JSON.parse(window.localStorage.getItem('user'));
let access_token = window.localStorage.getItem('access_token');
if (user && access_token) {
axios.defaults.headers['authorization'] = `Bearer ${access_token}`;
return !!user;
}
return false;
},
async logIn(email, password) {
try {
// Send request
console.log(email, password);
// this._user = { ...defaultUser, email };
// return {
// isOk: true,
// data: this._user
// };
const response = await axios.post('authentication/login', {
email,
password: this.encrypt(password),
});
const requestOptions = {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ email: email, password: password }),
const data = response.data;
this._user = {
username: data.data.username,
email: data.data.email,
role: data.data.role,
avatarUrl: 'https://js.devexpress.com/Demos/WidgetsGallery/JSDemos/images/employees/06.png',
};
const response = await fetch('http://localhost:9090/api/authentication/login', requestOptions);
const data = await response.json();
window.localStorage.setItem('user', JSON.stringify(this._user))
window.localStorage.setItem('access_token', response.data.data.accessToken)
window.localStorage.setItem('refresh_token', response.data.data.refreshToken)
console.log(data);
//console.log(data.data.length);
// this._user = {
// id: response.data.id,
// email: response.data.role,
// name: response.data.keterangan,
// role_id: response.data.id,
// };
if(data.status == 'sukses') {
const defaultUser = {
email: data.data.email,
avatarUrl: 'https://js.devexpress.com/Demos/WidgetsGallery/JSDemos/images/employees/06.png',
name: data.data.name,
};
this._user = { ...defaultUser };
axios.defaults.headers['authorization'] = `Bearer ${response.data.data.accessToken}`;
if (response.status === 200) {
return {
isOk: true,
data: this._user
};
} else {
//--- jika gagal munculkan pesan gagal
return {
isOk: false,
message: "Authentication failed"
@@ -70,16 +66,27 @@ export default {
async logOut() {
this._user = null;
window.localStorage.removeItem('user');
window.localStorage.removeItem('access_token');
window.localStorage.removeItem('refresh_token');
await axios.post('authentication/logout')
axios.defaults.headers['authorization'] = null;
router.push({ name: 'login-form' })
},
async getUser() {
try {
// Send request
const user = JSON.parse(window.localStorage.getItem('user'));
if (user) {
return {
isOk: true,
data: user,
};
}
throw new Error(`Could not find current logged in user.`);
return {
isOk: true,
data: this._user
};
}
catch {
return {
@@ -137,5 +144,23 @@ export default {
message: "Failed to create account"
};
}
}
},
encrypt(param) {
const publicKey = `-----BEGIN PUBLIC KEY-----
${process.env.VUE_APP_PUBLIC_KEY}
-----END PUBLIC KEY-----`
const rsa = Forge.pki.publicKeyFromPem(publicKey)
const encrypted = rsa.encrypt(param, 'RSA-OAEP', {
md: Forge.md.sha256.create(),
mgf1: {
md: Forge.md.sha1.create(),
},
});
return btoa(encrypted)
},
};