2019-09-18 15:02:21 +09:00
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
|
|
|
|
import { Observable } from 'rxjs';
|
|
|
|
import { map } from 'rxjs/operators';
|
|
|
|
|
|
|
|
import {
|
|
|
|
ProtocolService,
|
|
|
|
PacketBody,
|
|
|
|
PacketBodyValue
|
|
|
|
} from '@ucap-webmessenger/protocol';
|
|
|
|
import { LoginRequest, LoginResponse } from '../models/login';
|
|
|
|
import {
|
|
|
|
SVC_TYPE_LOGIN,
|
|
|
|
SSVC_TYPE_LOGIN_REQ,
|
|
|
|
SSVC_TYPE_LOGIN_RES
|
|
|
|
} from '../types/service';
|
|
|
|
import { RoleCode } from '../types/role-code';
|
|
|
|
|
|
|
|
@Injectable({
|
|
|
|
providedIn: 'root'
|
|
|
|
})
|
|
|
|
export class AuthenticationProtocolService {
|
|
|
|
constructor(private protocolService: ProtocolService) {}
|
|
|
|
|
|
|
|
public login(req: LoginRequest): Observable<LoginResponse> {
|
|
|
|
const bodyList: PacketBody[] = [];
|
|
|
|
|
|
|
|
bodyList.push(
|
|
|
|
{ type: PacketBodyValue.String, value: req.loginId },
|
|
|
|
{ type: PacketBodyValue.String, value: req.loginPw },
|
|
|
|
{ type: PacketBodyValue.String, value: req.deviceType },
|
|
|
|
{ type: PacketBodyValue.String, value: req.deviceId },
|
2019-09-19 15:51:42 +09:00
|
|
|
{ type: PacketBodyValue.String, value: req.token },
|
2019-09-18 15:02:21 +09:00
|
|
|
{ type: PacketBodyValue.String, value: req.localeCode },
|
|
|
|
{ type: PacketBodyValue.String, value: req.pushId },
|
|
|
|
{ type: PacketBodyValue.String, value: req.companyCode },
|
2019-09-19 15:51:42 +09:00
|
|
|
{ type: PacketBodyValue.Integer, value: req.passwordEncodingType },
|
2019-09-18 15:02:21 +09:00
|
|
|
{ type: PacketBodyValue.String, value: req.clientVersion },
|
|
|
|
{ type: PacketBodyValue.String, value: req.reconnect ? 'Y' : 'N' },
|
|
|
|
{ type: PacketBodyValue.String, value: req.ip },
|
|
|
|
{ type: PacketBodyValue.String, value: req.hostName },
|
|
|
|
{ type: PacketBodyValue.Integer, value: req.encriptionData ? 2 : 1 },
|
|
|
|
{ type: PacketBodyValue.String, value: req.userSpecificInformation },
|
|
|
|
{ type: PacketBodyValue.String, value: req.productId },
|
|
|
|
{ type: PacketBodyValue.String, value: req.productName }
|
|
|
|
);
|
|
|
|
|
|
|
|
if (req.encriptionData) {
|
|
|
|
bodyList.push(
|
|
|
|
{ type: PacketBodyValue.String, value: req.encriptionData },
|
|
|
|
{ type: PacketBodyValue.String, value: req.accessToken }
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.protocolService
|
|
|
|
.call(SVC_TYPE_LOGIN, SSVC_TYPE_LOGIN_REQ, ...bodyList)
|
|
|
|
.pipe(
|
|
|
|
map(res => {
|
|
|
|
return {
|
|
|
|
loginId: res.bodyList[0],
|
|
|
|
userSeq: res.bodyList[1],
|
|
|
|
userInfo: res.bodyList[2],
|
|
|
|
token: res.bodyList[3],
|
|
|
|
companyCode: res.bodyList[4],
|
|
|
|
departmentCode: res.bodyList[5],
|
|
|
|
userId: res.bodyList[6],
|
|
|
|
passwordEncodingType: res.bodyList[7],
|
|
|
|
encriptionKey: res.bodyList[8],
|
|
|
|
existingPid: res.bodyList[9] === 'Y' ? true : false,
|
|
|
|
roleCode: res.bodyList[10] as RoleCode,
|
|
|
|
statusMessage1: res.bodyList[11],
|
|
|
|
statusMessage2: res.bodyList[12],
|
|
|
|
statusMessage3: res.bodyList[13],
|
|
|
|
fileDownloadAllow: res.bodyList[14] === 'Y' ? true : false,
|
|
|
|
fileRetentionPeriod: res.bodyList[15],
|
|
|
|
passwordValidityPeriod: res.bodyList[16],
|
|
|
|
privateInformationAgree: res.bodyList[17] === 'Y' ? true : false,
|
|
|
|
madn: res.bodyList[18],
|
|
|
|
hardPhoneSadn: res.bodyList[19],
|
|
|
|
fmcSadn: res.bodyList[20],
|
|
|
|
pbxIndex: res.bodyList[21],
|
|
|
|
passwordExpired: res.bodyList[22] === 'Y' ? true : false,
|
|
|
|
validAccount: res.bodyList[23] === 'Y' ? true : false,
|
|
|
|
validDevice: res.bodyList[24] === 'Y' ? true : false,
|
|
|
|
useableDevice: res.bodyList[25] === 'Y' ? true : false,
|
|
|
|
deviceScreenForcedLock: res.bodyList[26] === 'Y' ? true : false,
|
|
|
|
tokenString: res.bodyList[27],
|
|
|
|
havePermissionsForIntegratedMessageBox:
|
|
|
|
res.bodyList[28] === 'Y' ? true : false,
|
|
|
|
talkWithMeBotSeq: res.bodyList[29],
|
|
|
|
pinCode: res.bodyList[30],
|
|
|
|
permissionsForViewSchedule: res.bodyList[31],
|
|
|
|
havePermissionsForDevice: res.bodyList[32] === 'Y' ? true : false
|
|
|
|
} as LoginResponse;
|
|
|
|
})
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|