diff --git a/src/app/api/auth/route.ts b/src/app/api/auth/route.ts index 8593430..d6c9d96 100644 --- a/src/app/api/auth/route.ts +++ b/src/app/api/auth/route.ts @@ -70,7 +70,7 @@ export async function POST(request: Request) { * - Builder: 2차 판매점 시공권한 유저 (groupId: 70000 (Musubi) 이고 builderNo가 null이 아닌 경우 또는 * groupId: 70000 (Musubi) 이고 builderNo: null이고 userAuthCd: B인 경우) */ - if (result.data.data.userId === 'T01') { + if (result.data.data.userId === 'T01' || result.data.data.storeId === 'T01') { session.role = 'T01' } else if (result.data.data.groupId === '60000') { session.role = 'Admin' @@ -124,7 +124,7 @@ export async function POST(request: Request) { ROLE: '', } - if (result.data.data.userId === 'T01') { + if (result.data.data.userId === 'T01' || result.data.data.storeId === 'T01') { resultForSession.ROLE = 'T01' } else if (result.data.data.groupId === '60000') { resultForSession.ROLE = 'Admin' diff --git a/src/app/api/survey-sales/service.ts b/src/app/api/survey-sales/service.ts index 4988d51..5fc79cd 100644 --- a/src/app/api/survey-sales/service.ts +++ b/src/app/api/survey-sales/service.ts @@ -104,9 +104,9 @@ export class SurveySalesService { * @returns {WhereCondition} 역할 기반 조건 * @exampleResult { AND: [{ STORE_ID: { equals: '1234567890' } }] } * - * @description T01 : 임시저장되지 않은 전체 매물 조회 - * @description Admin : 같은 판매점에서 작성된 매물, 2차점에게 제출받은 매물 조회 - * @description Admin_Sub : 같은 판매점에서 작성된 매물, 시공권한 user에게 제출받은 매물 조회 + * @description T01 : 임시저장되지 않은 전체 매물 조회 | T01 판매점에서 작성한 매물 조회 + * @description Admin : 같은 판매점에서 작성된 매물, 2차점에게 제출받은 매물 조회 | 본인이 작성한 매물 조회 + * @description Admin_Sub : 같은 판매점에서 작성된 매물, 시공권한 user에게 제출받은 매물 조회 | 본인이 작성한 매물 조회 * @description Builder : 같은 시공점에서 작성된 매물 조회 | 본인이 작성한 매물 조회 * @description Partner : 같은 시공점에서 작성된 매물 조회 | 본인이 작성한 매물 조회 */ @@ -115,16 +115,6 @@ export class SurveySalesService { switch (this.session?.role) { case 'Admin': - if (this.session?.storeId) { - where.OR = [ - { AND: [{ STORE_ID: { equals: this.session.storeId } }] }, - { AND: [{ SUBMISSION_TARGET_ID: { equals: this.session.storeId } }, { SUBMISSION_STATUS: { equals: true } }] }, - { AND: [{ SUBMISSION_TARGET_NM: { equals: this.session.storeNm } }, { SUBMISSION_STATUS: { equals: true } }] }, - ] - } else { - where.AND.push({ REPRESENTATIVE_ID: { equals: this.session.userId } }) - } - break case 'Admin_Sub': if (this.session?.storeId) { where.OR = [ @@ -391,9 +381,9 @@ export class SurveySalesService { if (!survey || !session) return false const roleChecks = { - T01: () => this.checkT01Role(survey, session.userId), + T01: () => this.checkT01Role(survey, session.userId, session.storeId), Admin: () => this.checkAdminRole(survey, session.storeId, session.storeNm), - Admin_Sub: () => this.checkAdminSubRole(survey, session.storeId, session.storeNm), + Admin_Sub: () => this.checkAdminRole(survey, session.storeId, session.storeNm), Partner: () => this.checkPartnerOrBuilderRole(survey, session.builderId, session.userId), Builder: () => this.checkPartnerOrBuilderRole(survey, session.builderId, session.userId), default: () => false, @@ -404,20 +394,20 @@ export class SurveySalesService { /** * @description T01 권한 체크 - * - 본인이 작성한 임시저장 매물, 임시저장 매물을 제외한 전 매물 조회 가능 + * - 본인이 작성한 임시저장 매물 혹은 T01 판매점에서 작성한 매물, 임시저장 매물을 제외한 전 매물 조회 가능 * * @param {any} survey 조사 매물 데이터 * @returns {boolean} 해당 매물의 조회 권한 여부 (true: 권한 있음, false: 권한 없음) */ - private checkT01Role(survey: any, userId: string | null): boolean { - if (survey.REPRESENTATIVE_ID === userId) { + private checkT01Role(survey: any, userId: string | null, storeId: string | null): boolean { + if (survey.REPRESENTATIVE_ID === userId || survey.STORE_ID === storeId) { return true } return survey.SRL_NO !== '一時保存' } /** - * @description Admin 권한 체크 (1차점 - Order) + * @description Admin, Admin_Sub 권한 체크 (1차점 - Order, 2차점 - Musubi) * - 같은 판매점에서 작성한 매물, 제출 받은 매물 조회 가능 * * @param {any} survey 조사 매물 데이터 @@ -432,22 +422,7 @@ export class SurveySalesService { } /** - * @description Admin_Sub 권한 체크 (2차점 - Musubi) - * - 같은 판매점에서 작성한 매물, 시공권한 user에게 제출받은 매물 조회 가능 - * - * @param {any} survey 조사 매물 데이터 - * @param {string | null} storeId 판매점 ID - * @returns {boolean} 해당 매물의 조회 권한 여부 (true: 권한 있음, false: 권한 없음) - */ - private checkAdminSubRole(survey: any, storeId: string | null, storeNm: string | null): boolean { - if (!storeId) return survey.REPRESENTATIVE_ID === this.session?.userId - return survey.SUBMISSION_STATUS - ? survey.SUBMISSION_TARGET_ID === storeId || survey.SUBMISSION_TARGET_NM === storeNm || survey.STORE_ID === storeId - : survey.STORE_ID === storeId - } - - /** - * @description Partner 또는 Builder 권한 체크 + * @description Partner, Builder 권한 체크 * - 같은 시공점에서 작성한 매물 조회 가능 * - 시공점ID가 없다면 본인이 작성한 매물 조회 가능 *