hrms-api-org/src/controllers/LoginController.ts

55 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-08-27 16:37:42 +07:00
import { Controller, Route, Tags, SuccessResponse, Response, Post, Body } from "tsoa";
import HttpSuccess from "../interfaces/http-success";
import HttpStatus from "../interfaces/http-status";
import CallAPI from "../interfaces/call-api";
import HttpError from "../interfaces/http-error";
@Route("api/v1/org/login")
@Tags("Profile")
@Response(
HttpStatus.INTERNAL_SERVER_ERROR,
"เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง",
)
@SuccessResponse(HttpStatus.OK, "สำเร็จ")
export class LoginController extends Controller {
/**
* API login
*
* @summary - login
*
*/
@Post()
async login(
@Body()
body: {
username: string;
password: string;
},
) {
const data = {
client_id: "gettoken",
client_secret: process.env.AUTH_ACCOUNT_SECRET,
grant_type: "password",
requested_token_type: "urn:ietf:params:oauth:token-type:refresh_token",
username: body.username,
password: body.password,
};
let _data: any = null;
await Promise.all([
await new CallAPI()
.PostDataKeycloak("/realms/bma-ehr/protocol/openid-connect/token", data)
.then(async (x) => {
_data = x;
})
.catch(async (x) => {
throw new HttpError(HttpStatus.UNAUTHORIZED, "ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง");
}),
]);
if (_data == null) {
return new HttpError(HttpStatus.UNAUTHORIZED, "ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง");
} else {
return new HttpSuccess(_data);
}
}
}