Commit 534af721 by Ooh-Ao

แก้ user

parent b3ebfbc9
......@@ -4,6 +4,7 @@ import { Router } from '@angular/router';
import { AuthService } from 'src/app/shared/services/auth.service';
import { DOCUMENT } from '@angular/common';
import { TokenService } from 'src/app/shared/services/token.service';
import { EmployeeService } from 'src/app/shared/services/employee.service';
@Component({
selector: 'app-login-page',
......@@ -21,7 +22,8 @@ export class LoginPageComponent {
private renderer: Renderer2,
private formBuilder: FormBuilder,
private router: Router,
private authservice: AuthService, private tokenService: TokenService) {
private authservice: AuthService, private tokenService: TokenService,
private employeeService: EmployeeService) {
const bodyElement = this.renderer.selectRootElement('body', true);
this.renderer.setAttribute(bodyElement, 'class', 'cover1 justify-center');
......@@ -109,8 +111,12 @@ export class LoginPageComponent {
this.errorUser = false
this.tokenService.saveToken(response.accessToken);
this.tokenService.saveRefreshToken(response.refreshToken);
this.tokenService.saveUser(response);
this.router.navigate(['/self-evaluation']);
this.tokenService.saveUser(this.decodeJWT(response.accessToken))
this.employeeService.getProfile().subscribe(result => {
this.tokenService.saveUserData(result)
this.router.navigate(['/self-evaluation']);
})
} else {
this.errorUser = true
}
......@@ -125,6 +131,15 @@ export class LoginPageComponent {
}
}
decodeJWT(token: string) {
let base64Url = token.split('.')[1]; // ดึงส่วนที่เป็น Payload
let base64 = base64Url.replace('-', '+').replace('_', '/'); // แก้ไข base64 ให้ถูกต้อง
let jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
}
public togglePassword() {
this.showPassword = !this.showPassword;
}
......
......@@ -6,6 +6,7 @@ import { NavigationEnd, Router } from '@angular/router';
import { checkHoriMenu, switcherArrowFn } from './sidebar';
import { ConfigPermissionService } from '../../services/config-permission.service';
import { ConfigPermissionModel, MenuBodyModel, MyConfigPermissionModel } from '../../model/config-permission.model';
import { TokenService } from '../../services/token.service';
@Component({
selector: 'app-sidebar',
......@@ -62,7 +63,7 @@ export class SidebarComponent {
public menuItems: Menu[] = [];
public menuitemsSubscribe$!: Subscription;
user_level = ""
user_level? = ""
configPermission: { loading: boolean, data: ConfigPermissionModel } = { loading: false, data: new MyConfigPermissionModel() }
constructor(
......@@ -73,9 +74,10 @@ export class SidebarComponent {
private elementRef: ElementRef,
private configPermissionService: ConfigPermissionService,
private cdr: ChangeDetectorRef,
private tokenService : TokenService
) {
this.screenWidth = window.innerWidth;
this.user_level = this.decodeJWT(sessionStorage.getItem("accessToken") || '').user_level
this.user_level = this.tokenService.getUser()?.user_level
}
ngOnInit() {
......@@ -111,7 +113,7 @@ export class SidebarComponent {
}
getConfigPermissionByUserLevel() {
this.configPermission.loading = true
this.configPermissionService.getByUserLevel(this.user_level).subscribe({
this.configPermissionService.getByUserLevel(this.user_level!).subscribe({
next: response => {
this.configPermission.data = new MyConfigPermissionModel(response)
this.menuItems.forEach(x => {
......@@ -161,14 +163,14 @@ export class SidebarComponent {
})
}
decodeJWT(token: string) {
let base64Url = token.split('.')[1]; // ดึงส่วนที่เป็น Payload
let base64 = base64Url.replace('-', '+').replace('_', '/'); // แก้ไข base64 ให้ถูกต้อง
let jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
}
// decodeJWT(token: string) {
// let base64Url = token.split('.')[1]; // ดึงส่วนที่เป็น Payload
// let base64 = base64Url.replace('-', '+').replace('_', '/'); // แก้ไข base64 ให้ถูกต้อง
// let jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {
// return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
// }).join(''));
// return JSON.parse(jsonPayload);
// }
......
......@@ -9,18 +9,17 @@ import { PageModel } from '../model/page.model';
providedIn: 'root'
})
export class EmployeeService {
api = "/employee"
urlApi = environment.baseUrl + this.api
baseUrlapi = "/employee"
constructor(private http: HttpClient) {
}
getPageList(page: string, size: string): Observable<PageModel> {
return this.http.get<PageModel>(this.urlApi + "/profile/create-short?page=" + page + "&size=" + size)
return this.http.get<PageModel>(this.baseUrlapi + "/profile/create-short?page=" + page + "&size=" + size)
}
getPageListAll(): Observable<EmployeeModel[]> {
return this.http.get<PageModel>(`${this.urlApi}/profile/create-short?page=0&size=100`).pipe(
return this.http.get<PageModel>(`${this.baseUrlapi}/profile/create-short?page=0&size=100`).pipe(
expand(response =>
!response.last
? this.http.get<PageModel>(`${this.urlApi}/profile/create-short?page=${response.pageable.pageNumber + 1}&size=100`)
? this.http.get<PageModel>(`${this.baseUrlapi}/profile/create-short?page=${response.pageable.pageNumber + 1}&size=100`)
: []
),
map(response => response.content),
......@@ -29,25 +28,25 @@ export class EmployeeService {
}
getList(): Observable<EmployeeModel[]> {
return this.http.get<EmployeeModel[]>(this.urlApi + "/profile/create-short/lists")
return this.http.get<EmployeeModel[]>(this.baseUrlapi + "/profile/create-short/lists")
}
getById(employeeId: string): Observable<EmployeeModel> {
return this.http.get<EmployeeModel>(this.urlApi + "/profile?employeeId=" + employeeId)
return this.http.get<EmployeeModel>(this.baseUrlapi + "/profile?employeeId=" + employeeId)
}
getWorking(): Observable<EmployeeModel> {
return this.http.get<EmployeeModel>(this.urlApi + "/working/mini")
return this.http.get<EmployeeModel>(this.baseUrlapi + "/working/mini")
}
getWorkingById(employeeId?: string): Observable<EmployeeModel> {
return this.http.get<EmployeeModel>(this.urlApi + "/working/mini" + (employeeId ? "?employeeid=" + employeeId : ''))
return this.http.get<EmployeeModel>(this.baseUrlapi + "/working/mini" + (employeeId ? "?employeeid=" + employeeId : ''))
}
getProfile(): Observable<EmployeeModel> {
return this.http.get<EmployeeModel>(this.urlApi + "/profile")
return this.http.get<EmployeeModel>(this.baseUrlapi + "/profile")
}
add(body: EmployeeModel): Observable<AlertModel> {
return this.http.post<AlertModel>(this.urlApi + '/profile-create', body)
return this.http.post<AlertModel>(this.baseUrlapi + '/profile-create', body)
}
update(body: EmployeeModel): Observable<AlertModel> {
return this.http.post<AlertModel>(this.urlApi + '/profile-update', body)
return this.http.post<AlertModel>(this.baseUrlapi + '/profile-update', body)
}
delete(body: EmployeeModel[]): Observable<AlertModel> {
const options = {
......@@ -56,6 +55,6 @@ export class EmployeeService {
}),
body: body
};
return this.http.delete<AlertModel>(this.urlApi + "/profile-delete", options)
return this.http.delete<AlertModel>(this.baseUrlapi + "/profile-delete", options)
}
}
......@@ -23,10 +23,11 @@ export class HttpRequestInterceptor {
return next.handle(req);
} else {
let authReq = req;
console.log(req.url)
const fullUrl = req.url.startsWith("http") ? req.url : environment.baseUrl + req.url;
const token = this.tokenService.getToken()
if (token != null && !req.url.includes("/refresh-token")) {
authReq = this.addTokenHeader(req, token ,fullUrl);
authReq = this.addTokenHeader(req, "Bearer " +token ,fullUrl);
}else{
const overideReq = {
url: fullUrl,
......
......@@ -7,10 +7,38 @@ const TOKEN_KEY = 'auth-token';
const REFRESHTOKEN_KEY = 'auth-refreshtoken';
const USER_KEY = 'auth-user';
const USER_DATA_KEY = 'auth-user-data';
export class UserLoginModel {
public username: string = "";
public accessToken: string = "";
public refreshToken: string = "";
export interface UserLoginModel {
sub: string;
iss: string;
companyid: string;
companyName: string;
employeeid: string;
dbName: string;
job: string;
emp_position: string;
user_level: string;
lang: string;
firstlogin: string;
user_role: string;
role_level: string;
encode: string;
user: string;
roles: string[];
username: string;
app_name: string;
zmlogin: string;
zm_user: string;
memberid: string;
token_zeeme: string;
comid: string;
url_myhr: string;
regionallty: string;
ad: string;
workarea: string;
branch: string;
actorid: string;
accountactive: string;
exp: number;
}
@Injectable({
......@@ -28,11 +56,6 @@ export class TokenService {
public saveToken(token: string): void {
window.localStorage.removeItem(TOKEN_KEY);
window.localStorage.setItem(TOKEN_KEY, token);
const user = this.getUser();
if (user.accessToken) {
this.saveUser({ ...user, accessToken: token });
}
}
public saveUser(user: any): void {
......@@ -40,13 +63,13 @@ export class TokenService {
window.localStorage.setItem(USER_KEY, JSON.stringify(user));
}
public getUser(): UserLoginModel {
public getUser(): UserLoginModel | undefined {
const user = window.localStorage.getItem(USER_KEY);
if (user) {
return JSON.parse(user);
}
return new UserLoginModel();
return undefined;
}
public getToken(): string | null {
......@@ -61,9 +84,9 @@ export class TokenService {
public getRefreshToken(): string | null {
return window.localStorage.getItem(REFRESHTOKEN_KEY);
}
public saveUserData(user: string): void {
public saveUserData(user: EmployeeModel): void {
window.localStorage.removeItem(USER_DATA_KEY);
window.localStorage.setItem(USER_DATA_KEY, user);
window.localStorage.setItem(USER_DATA_KEY, JSON.stringify(user));
}
public getUserData(): EmployeeModel {
......
......@@ -3,7 +3,7 @@
// The list of file replacements can be found in `angular.json`.
export const environment = {
production: false,
baseUrl: ' https://myskill-x-uat.myhr.co.th/api',
baseUrl: 'https://myskill-x-uat.myhr.co.th/api',
};
/*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment