111 lines
4.2 KiB
TypeScript
Raw Normal View History

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,
2019-09-19 17:03:39 +09:00
SVC_TYPE_LOGOUT,
SSVC_TYPE_LOGOUT_REQ
2019-09-18 15:02:21 +09:00
} from '../types/service';
import { RoleCode } from '../types/role-code';
2019-09-19 17:03:39 +09:00
import { LogoutRequest, LogoutResponse } from '../models/logout';
2019-09-18 15:02:21 +09:00
@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;
})
);
}
2019-09-19 17:03:39 +09:00
public logout(req: LogoutRequest): Observable<LogoutResponse> {
return this.protocolService
.call(SVC_TYPE_LOGOUT, SSVC_TYPE_LOGOUT_REQ)
.pipe(
map(res => {
return {} as LogoutResponse;
})
);
}
2019-09-18 15:02:21 +09:00
}