import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Router } from '@angular/router'; import { map } from 'rxjs/internal/operators'; import { authConfig, ConfigsService, md5, setToken, StorageType, transformResponse } from 'pz-unit'; import { LoginInfo } from './auth.model'; import { serveUrl } from 'environments/environment'; @Injectable() export class AuthService { public constructor(private http: HttpClient, protected config: ConfigsService, private router: Router) { } // 登陆 public login(input: LoginInfo, apiUrl?: string) { input.password = md5(input.password); const url = `${this.config.exportServer(serveUrl)}${ apiUrl ? apiUrl : 'user/tUser/login'}`; this.http.post(url, input).pipe(map(transformResponse)).subscribe( (res: any) => { let result; if (res.employeeInfo) { result = res.employeeInfo; } else { result = res; } this.saveUser({ access_token: res.token, remember: input.remember, avatar: result.headImage, userName: result.employeeName, job: result.jobId, url: result.path, menu: res.authMap }); this.router.navigate(['/']); } ); } // 保存用户 public saveUser(info) { const token: any = {}; if (!info.remember) { authConfig.storageType = StorageType.sessionStorage; } else { const date = new Date(); authConfig.storageType = StorageType.localStorage; token.expires_at = date.setDate(date.getDate() + 7); } token.token_type = 'Bearer'; token.access_token = info.access_token; token.avatar = info.avatar; token.userName = info.userName; token.picServerUrl = info.url; token.menu = info.menu; token.jobId = info.job; setToken(token); } }