fixed remove redis permission
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m4s
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m4s
This commit is contained in:
parent
ac9dc93d1e
commit
880c249975
1 changed files with 43 additions and 2 deletions
|
|
@ -47,6 +47,11 @@ import { RoleKeycloak } from "../entities/RoleKeycloak";
|
||||||
import { addLogSequence } from "../interfaces/utils";
|
import { addLogSequence } from "../interfaces/utils";
|
||||||
import { OrgRevision } from "../entities/OrgRevision";
|
import { OrgRevision } from "../entities/OrgRevision";
|
||||||
import { Uuid } from "@elastic/elasticsearch/lib/api/types";
|
import { Uuid } from "@elastic/elasticsearch/lib/api/types";
|
||||||
|
import { promisify } from "util";
|
||||||
|
|
||||||
|
const REDIS_HOST = process.env.REDIS_HOST;
|
||||||
|
const REDIS_PORT = process.env.REDIS_PORT;
|
||||||
|
const redis = require("redis");
|
||||||
// import * as io from "../lib/websocket";
|
// import * as io from "../lib/websocket";
|
||||||
// import elasticsearch from "../elasticsearch";
|
// import elasticsearch from "../elasticsearch";
|
||||||
// import { StorageFolder } from "../interfaces/storage-fs";
|
// import { StorageFolder } from "../interfaces/storage-fs";
|
||||||
|
|
@ -352,6 +357,8 @@ export class KeycloakController extends Controller {
|
||||||
where: { keycloak: userId },
|
where: { keycloak: userId },
|
||||||
relations: ["roleKeycloaks"],
|
relations: ["roleKeycloaks"],
|
||||||
});
|
});
|
||||||
|
let profileId: string | undefined;
|
||||||
|
|
||||||
if (!profile) {
|
if (!profile) {
|
||||||
const profileEmp = await this.profileEmpRepo.findOne({
|
const profileEmp = await this.profileEmpRepo.findOne({
|
||||||
where: { keycloak: userId, employeeClass: "PERM" },
|
where: { keycloak: userId, employeeClass: "PERM" },
|
||||||
|
|
@ -359,10 +366,12 @@ export class KeycloakController extends Controller {
|
||||||
});
|
});
|
||||||
if (!profileEmp) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
if (!profileEmp) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
|
||||||
profileEmp.roleKeycloaks = profileEmp.roleKeycloaks.filter((x) => x.id != roleId);
|
profileEmp.roleKeycloaks = profileEmp.roleKeycloaks.filter((x) => x.id != roleId);
|
||||||
this.profileEmpRepo.save(profileEmp);
|
await this.profileEmpRepo.save(profileEmp);
|
||||||
|
profileId = profileEmp.id;
|
||||||
} else {
|
} else {
|
||||||
profile.roleKeycloaks = profile.roleKeycloaks.filter((x) => x.id != roleId);
|
profile.roleKeycloaks = profile.roleKeycloaks.filter((x) => x.id != roleId);
|
||||||
this.profileRepo.save(profile);
|
await this.profileRepo.save(profile);
|
||||||
|
profileId = profile.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
const list = await getRoles();
|
const list = await getRoles();
|
||||||
|
|
@ -374,6 +383,38 @@ export class KeycloakController extends Controller {
|
||||||
list.filter((v) => roleId === v.id),
|
list.filter((v) => roleId === v.id),
|
||||||
);
|
);
|
||||||
if (!result) throw new Error("Failed. Cannot remove user's role.");
|
if (!result) throw new Error("Failed. Cannot remove user's role.");
|
||||||
|
|
||||||
|
if (profileId) {
|
||||||
|
let redisClient: any;
|
||||||
|
let quitAsync: any;
|
||||||
|
try {
|
||||||
|
redisClient = redis.createClient({
|
||||||
|
host: REDIS_HOST,
|
||||||
|
port: REDIS_PORT,
|
||||||
|
});
|
||||||
|
const delAsync = promisify(redisClient.del).bind(redisClient);
|
||||||
|
quitAsync = promisify(redisClient.quit).bind(redisClient);
|
||||||
|
|
||||||
|
const [roleDeleted, menuDeleted] = await Promise.all([
|
||||||
|
delAsync("role_" + profileId),
|
||||||
|
delAsync("menu_" + profileId),
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (roleDeleted === 0) {
|
||||||
|
console.warn(`Redis key not found: role_${profileId}`);
|
||||||
|
}
|
||||||
|
if (menuDeleted === 0) {
|
||||||
|
console.warn(`Redis key not found: menu_${profileId}`);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Failed to delete Redis cache for profile ${profileId}:`, error);
|
||||||
|
} finally {
|
||||||
|
if (quitAsync) {
|
||||||
|
await quitAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return new HttpSuccess();
|
return new HttpSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue