kic, 킨텍스 추가 요구사항 반영(url 보안체크 추가, 승인대상자료만 조건추가 ....)
This commit is contained in:
parent
00b24a98fc
commit
83b3027e0a
@ -152,6 +152,35 @@ public class MainController
|
||||
return ResultData.ok(resBody);
|
||||
}
|
||||
|
||||
/**
|
||||
* url 화면 권한 맵 정보 추출
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2026.03.12
|
||||
*/
|
||||
@RequestMapping(value="/main/selectMenuScrnAuth.do")
|
||||
@ResponseBody
|
||||
public ResponseEntity<ResultData> selectMenuScrnAuth( @RequestBody LinkedHashMap<String, Object> requestMap
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response
|
||||
) throws Exception
|
||||
{
|
||||
|
||||
log.info("\n\n");
|
||||
log.info(">>>>>>>>>>>>>>>>>>>>>>>>> /main/selectMenuScrnAuth.do <<<<<<<<<<<<<<<<<<<<<<<<<");
|
||||
log.info("getRequestURI [{}]", request.getRequestURI() );
|
||||
log.info("입력값 확인 requestMap [{}]", requestMap.toString() );
|
||||
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>();
|
||||
|
||||
List<LinkedHashMap<String, Object>> listMeunUrl = menuManageService.selectMenuScrnAuth();
|
||||
|
||||
resBody.put("listMeunUrl", listMeunUrl);
|
||||
|
||||
log.info("<<<<<<<<<<<<<<<<<<<<<<<<< /main/selectMenuScrnAuth.do >>>>>>>>>>>>>>>>>>>>>>>>>");
|
||||
|
||||
return ResultData.ok(resBody);
|
||||
}
|
||||
|
||||
/**
|
||||
* ID 찾기
|
||||
* @author urp 인프라본부 나혁제
|
||||
|
||||
@ -31,4 +31,7 @@ public interface MainMenuManageDao
|
||||
{
|
||||
public List<LinkedHashMap<String, Object>> selectMainMenuHead(String strVal1);
|
||||
public List<LinkedHashMap<String, Object>> selectMainMenuLeft(String strVal1);
|
||||
|
||||
// 2026.03.12 나혁제 메뉴url 맵핑 정보
|
||||
public List<LinkedHashMap<String, Object>> selectMenuScrnAuth();
|
||||
}
|
||||
|
||||
@ -45,6 +45,12 @@ public class MainMenuManageService
|
||||
return menuManageDao.selectMainMenuLeft(strVal1);
|
||||
}
|
||||
|
||||
// 2026.03.12 나혁제 메뉴url 맵핑 정보
|
||||
public List<LinkedHashMap<String, Object>> selectMenuScrnAuth()
|
||||
{
|
||||
return menuManageDao.selectMenuScrnAuth();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -74,11 +74,11 @@ public class ReportCheckController
|
||||
// 토큰정보 획득
|
||||
TokenInfo tokenInfo = CommonUtil.getAccessTokenInfo(request);
|
||||
|
||||
String strGrpId = CommonUtil.nvl(tokenInfo.getStrGRP_ID());
|
||||
String strRole = CommonUtil.nvl(tokenInfo.getAuthorities());
|
||||
String strGrpId = CommonUtil.nvl(tokenInfo.getStrGRP_ID ());
|
||||
String strRole = CommonUtil.nvl(tokenInfo.getAuthorities ());
|
||||
|
||||
log.info("strGrpId [{}]", strGrpId);
|
||||
log.info("strRole [{}]" , strRole);
|
||||
log.info("strGrpId [{}]" , strGrpId);
|
||||
log.info("strRole [{}]" , strRole );
|
||||
log.info("순서 [{}]" , strRole.indexOf("ROLE_ADMIN"));
|
||||
|
||||
// 2025.11.24 나혁제 권한미부여 상태 조회불가
|
||||
@ -93,8 +93,8 @@ public class ReportCheckController
|
||||
requestMap.put("strGrpId", strGrpId);
|
||||
}
|
||||
|
||||
log.info("tokenInfo [{}]", tokenInfo.toString() );
|
||||
log.info("tokenInfo [{}]", tokenInfo.getAuthorities() );
|
||||
// log.info("tokenInfo [{}]", tokenInfo.toString() );
|
||||
// log.info("tokenInfo [{}]", tokenInfo.getAuthorities() );
|
||||
|
||||
requestMap.put("reqUser", tokenInfo.getUniqId());
|
||||
// requestMap.put("reqUser", "0");
|
||||
|
||||
@ -144,6 +144,10 @@
|
||||
<!-- 2025.09.15 나혁제 추가 필터 -->
|
||||
<if test="hidEosCheckYn != null and hidEosCheckYn == 1"><![CDATA[ AND (A.DT_EOS) <= sysdate()]]></if>
|
||||
|
||||
<!-- 2026.03.12 나혁제 추가 필터(제품번호, 실사용자) -->
|
||||
<if test="vcInAssetSerial != null and vcInAssetSerial != ''">AND A.VC_ASSET_SERIAL = #{vcInAssetSerial}</if>
|
||||
<if test="vcInRealChargrNm != null and vcInRealChargrNm != ''">AND A.VC_REAL_CHRGR_NM = #{vcInRealChargrNm}</if>
|
||||
|
||||
<if test='searchAll != null and searchAll != "" '>
|
||||
AND (
|
||||
(A.VC_ASSET_ID LIKE "%${searchAll}%" ) OR
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
<mapper namespace="com.urpsys.itmsapi.srm.dao.ReportCheckDao">
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<resultMap type="java.util.LinkedHashMap" id="reportVo">
|
||||
<result property="inReportSeq" column="IN_REPORT_SEQ"/>
|
||||
<result property="inReportStatus" column="IN_REPORT_STATUS"/>
|
||||
@ -35,6 +36,7 @@
|
||||
<result property="inAssetCount" column="IN_ASSET_COUNT"/>
|
||||
<result property="inPercallPrice" column="IN_PERCALL_PRICE"/>
|
||||
<result property="atchFileId" column="ATCH_FILE_ID"/>
|
||||
<result property="vcRegCompany" column="VC_REG_COMPANY"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 2025.09.22 나혁제 IN_SORT_SN 정렬순서추가 -->
|
||||
@ -160,13 +162,30 @@
|
||||
GROUP BY B.IN_REPORT_SEQ
|
||||
)
|
||||
</if>
|
||||
|
||||
<!-- 2026.03.11 나혁제 승인대상 자료만 추출 -->
|
||||
<if test='approvalTargetYn != null and approvalTargetYn == "Y" '>
|
||||
AND A.IN_REPORT_SEQ IN ( SELECT A.IN_REPORT_SEQ
|
||||
FROM (
|
||||
SELECT IN_REPORT_SEQ
|
||||
, MIN(IN_ORDER) IN_ORDER
|
||||
FROM CM_REPORT_APPROVAL A
|
||||
WHERE DT_APPROVAL_DATETIME IS NULL
|
||||
GROUP BY IN_REPORT_SEQ
|
||||
) N
|
||||
, CM_REPORT_APPROVAL A
|
||||
WHERE A.IN_REPORT_SEQ = N.IN_REPORT_SEQ
|
||||
AND A.IN_ORDER = N.IN_ORDER
|
||||
AND IN_USER_SEQ = #{reqUser}
|
||||
)
|
||||
AND A.IN_REPORT_STATUS ='1'
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 2025.02.17 나혁제 이부분은 일단 삭제처리
|
||||
<include refid="customizing"/>
|
||||
-->
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<select id="searchReport" parameterType="java.util.LinkedHashMap" resultMap="reportVo">
|
||||
<![CDATA[
|
||||
/* ReportCheckDao.searchReport */
|
||||
@ -206,11 +225,16 @@
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_TASK_USER)), "") AS VC_TASK_COMPANY
|
||||
FROM CM_REPORT A
|
||||
, IFNULL((SELECT COM.GRP_NM AS VC_REG_COMPANY_NAME
|
||||
FROM TB_AUTH_GRP_INFO COM
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_REG_USER)), "") AS VC_REG_COMPANY
|
||||
FROM CM_REPORT A
|
||||
LEFT OUTER JOIN TB_CMM_DTL_CD_INFO B ON A.IN_TASK=B.CD
|
||||
AND B.CD_ID ='SM_002'
|
||||
LEFT OUTER JOIN CM_SERVICE D ON A.IN_SERVICE_CODE=D.IN_SERVICE_CODE
|
||||
LEFT OUTER JOIN CM_INCIDENT C ON A.IN_INCIDENT_SEQ=C.IN_INCIDENT_SEQ
|
||||
LEFT OUTER JOIN CM_SERVICE D ON A.IN_SERVICE_CODE=D.IN_SERVICE_CODE
|
||||
LEFT OUTER JOIN CM_INCIDENT C ON A.IN_INCIDENT_SEQ=C.IN_INCIDENT_SEQ
|
||||
WHERE A.IN_REPORT_SEQ > 0
|
||||
AND A.IN_TASK = '1'
|
||||
]]>
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
<mapper namespace="com.urpsys.itmsapi.srm.dao.ReportErrorDao">
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<resultMap type="java.util.LinkedHashMap" id="reportVo">
|
||||
<result property="inReportSeq" column="IN_REPORT_SEQ"/>
|
||||
<result property="inReportStatus" column="IN_REPORT_STATUS"/>
|
||||
@ -35,6 +36,7 @@
|
||||
<result property="inAssetCount" column="IN_ASSET_COUNT"/>
|
||||
<result property="inPercallPrice" column="IN_PERCALL_PRICE"/>
|
||||
<result property="atchFileId" column="ATCH_FILE_ID"/>
|
||||
<result property="vcRegCompany" column="VC_REG_COMPANY"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 2025.09.22 나혁제 IN_SORT_SN 정렬순서추가 -->
|
||||
@ -133,12 +135,31 @@
|
||||
<if test="taskCode != null and taskCode!=0"> AND A.IN_TASK = ${taskCode}</if>
|
||||
<if test="sdate != null and sdate!=''"><![CDATA[ AND UNIX_TIMESTAMP(A.DT_LAST_UPDATE) >= UNIX_TIMESTAMP("${sdate}")]]></if>
|
||||
<if test="edate != null and edate!=''"><![CDATA[ AND UNIX_TIMESTAMP(A.DT_LAST_UPDATE) <= UNIX_TIMESTAMP("${edate}")]]></if>
|
||||
|
||||
<!-- 2026.03.11 나혁제 승인대상 자료만 추출 -->
|
||||
<if test='approvalTargetYn != null and approvalTargetYn == "Y" '>
|
||||
AND A.IN_REPORT_SEQ IN ( SELECT A.IN_REPORT_SEQ
|
||||
FROM (
|
||||
SELECT IN_REPORT_SEQ
|
||||
, MIN(IN_ORDER) IN_ORDER
|
||||
FROM CM_REPORT_APPROVAL A
|
||||
WHERE DT_APPROVAL_DATETIME IS NULL
|
||||
GROUP BY IN_REPORT_SEQ
|
||||
) N
|
||||
, CM_REPORT_APPROVAL A
|
||||
WHERE A.IN_REPORT_SEQ = N.IN_REPORT_SEQ
|
||||
AND A.IN_ORDER = N.IN_ORDER
|
||||
AND IN_USER_SEQ = #{reqUser}
|
||||
)
|
||||
AND A.IN_REPORT_STATUS ='1'
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 2025.02.17 나혁제 이부분은 일단 삭제처리
|
||||
<include refid="customizing"/>
|
||||
-->
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<select id="searchReport" parameterType="java.util.LinkedHashMap" resultMap="reportVo">
|
||||
<![CDATA[
|
||||
/* ReportErrorDao.searchReport */
|
||||
@ -178,6 +199,11 @@
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_TASK_USER)), "") AS VC_TASK_COMPANY
|
||||
, IFNULL((SELECT COM.GRP_NM AS VC_REG_COMPANY_NAME
|
||||
FROM TB_AUTH_GRP_INFO COM
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_REG_USER)), "") AS VC_REG_COMPANY
|
||||
FROM CM_REPORT A
|
||||
LEFT OUTER JOIN TB_CMM_DTL_CD_INFO B ON A.IN_TASK=B.CD
|
||||
AND B.CD_ID ='SM_002'
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
<mapper namespace="com.urpsys.itmsapi.srm.dao.ReportIssueDao">
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<resultMap type="java.util.LinkedHashMap" id="reportVo">
|
||||
<result property="inReportSeq" column="IN_REPORT_SEQ"/>
|
||||
<result property="inReportStatus" column="IN_REPORT_STATUS"/>
|
||||
@ -35,6 +36,7 @@
|
||||
<result property="inAssetCount" column="IN_ASSET_COUNT"/>
|
||||
<result property="inPercallPrice" column="IN_PERCALL_PRICE"/>
|
||||
<result property="atchFileId" column="ATCH_FILE_ID"/>
|
||||
<result property="vcRegCompany" column="VC_REG_COMPANY"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 2025.09.22 나혁제 IN_SORT_SN 정렬순서추가 -->
|
||||
@ -133,12 +135,31 @@
|
||||
<if test="taskCode != null and taskCode!=0"> AND A.IN_TASK = ${taskCode}</if>
|
||||
<if test="sdate != null and sdate!=''"><![CDATA[ AND UNIX_TIMESTAMP(A.DT_LAST_UPDATE) >= UNIX_TIMESTAMP("${sdate}")]]></if>
|
||||
<if test="edate != null and edate!=''"><![CDATA[ AND UNIX_TIMESTAMP(A.DT_LAST_UPDATE) <= UNIX_TIMESTAMP("${edate}")]]></if>
|
||||
|
||||
<!-- 2026.03.11 나혁제 승인대상 자료만 추출 -->
|
||||
<if test='approvalTargetYn != null and approvalTargetYn == "Y" '>
|
||||
AND A.IN_REPORT_SEQ IN ( SELECT A.IN_REPORT_SEQ
|
||||
FROM (
|
||||
SELECT IN_REPORT_SEQ
|
||||
, MIN(IN_ORDER) IN_ORDER
|
||||
FROM CM_REPORT_APPROVAL A
|
||||
WHERE DT_APPROVAL_DATETIME IS NULL
|
||||
GROUP BY IN_REPORT_SEQ
|
||||
) N
|
||||
, CM_REPORT_APPROVAL A
|
||||
WHERE A.IN_REPORT_SEQ = N.IN_REPORT_SEQ
|
||||
AND A.IN_ORDER = N.IN_ORDER
|
||||
AND IN_USER_SEQ = #{reqUser}
|
||||
)
|
||||
AND A.IN_REPORT_STATUS ='1'
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 2025.02.17 나혁제 이부분은 일단 삭제처리
|
||||
<include refid="customizing"/>
|
||||
-->
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<select id="searchReport" parameterType="java.util.LinkedHashMap" resultMap="reportVo">
|
||||
<![CDATA[
|
||||
/* ReportIssueDao.searchReport */
|
||||
@ -178,6 +199,11 @@
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_TASK_USER)), "") AS VC_TASK_COMPANY
|
||||
, IFNULL((SELECT COM.GRP_NM AS VC_REG_COMPANY_NAME
|
||||
FROM TB_AUTH_GRP_INFO COM
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_REG_USER)), "") AS VC_REG_COMPANY
|
||||
FROM CM_REPORT A
|
||||
LEFT OUTER JOIN TB_CMM_DTL_CD_INFO B ON A.IN_TASK=B.CD
|
||||
AND B.CD_ID ='SM_002'
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
|
||||
<mapper namespace="com.urpsys.itmsapi.srm.dao.ReportOtherDao">
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<resultMap type="java.util.LinkedHashMap" id="reportVo">
|
||||
<result property="inReportSeq" column="IN_REPORT_SEQ"/>
|
||||
<result property="inReportStatus" column="IN_REPORT_STATUS"/>
|
||||
@ -35,6 +36,7 @@
|
||||
<result property="inAssetCount" column="IN_ASSET_COUNT"/>
|
||||
<result property="inPercallPrice" column="IN_PERCALL_PRICE"/>
|
||||
<result property="atchFileId" column="ATCH_FILE_ID"/>
|
||||
<result property="vcRegCompany" column="VC_REG_COMPANY"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="java.util.LinkedHashMap" id="formVo">
|
||||
@ -120,12 +122,31 @@
|
||||
<if test="taskCode != null and taskCode!=0"> AND A.IN_TASK = ${taskCode}</if>
|
||||
<if test="sdate != null and sdate!=''"><![CDATA[ AND UNIX_TIMESTAMP(A.DT_LAST_UPDATE) >= UNIX_TIMESTAMP("${sdate}")]]></if>
|
||||
<if test="edate != null and edate!=''"><![CDATA[ AND UNIX_TIMESTAMP(A.DT_LAST_UPDATE) <= UNIX_TIMESTAMP("${edate}")]]></if>
|
||||
|
||||
<!-- 2026.03.11 나혁제 승인대상 자료만 추출 -->
|
||||
<if test='approvalTargetYn != null and approvalTargetYn == "Y" '>
|
||||
AND A.IN_REPORT_SEQ IN ( SELECT A.IN_REPORT_SEQ
|
||||
FROM (
|
||||
SELECT IN_REPORT_SEQ
|
||||
, MIN(IN_ORDER) IN_ORDER
|
||||
FROM CM_REPORT_APPROVAL A
|
||||
WHERE DT_APPROVAL_DATETIME IS NULL
|
||||
GROUP BY IN_REPORT_SEQ
|
||||
) N
|
||||
, CM_REPORT_APPROVAL A
|
||||
WHERE A.IN_REPORT_SEQ = N.IN_REPORT_SEQ
|
||||
AND A.IN_ORDER = N.IN_ORDER
|
||||
AND IN_USER_SEQ = #{reqUser}
|
||||
)
|
||||
AND A.IN_REPORT_STATUS ='1'
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<!-- 2025.02.17 나혁제 이부분은 일단 삭제처리
|
||||
<include refid="customizing"/>
|
||||
-->
|
||||
|
||||
<!-- 2026.03.11 나혁제 VC_REG_COMPANY 추가 -->
|
||||
<select id="searchReport" parameterType="java.util.LinkedHashMap" resultMap="reportVo">
|
||||
<![CDATA[
|
||||
/* ReportOtherDao.searchReport */
|
||||
@ -165,6 +186,11 @@
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_TASK_USER)), "") AS VC_TASK_COMPANY
|
||||
, IFNULL((SELECT COM.GRP_NM AS VC_REG_COMPANY_NAME
|
||||
FROM TB_AUTH_GRP_INFO COM
|
||||
WHERE COM.GRP_ID = ( SELECT GROUP_ID
|
||||
FROM COMVNUSERMASTER
|
||||
WHERE ESNTL_ID = A.IN_REG_USER)), "") AS VC_REG_COMPANY
|
||||
FROM CM_REPORT A
|
||||
LEFT OUTER JOIN TB_CMM_DTL_CD_INFO B ON A.IN_TASK=B.CD
|
||||
AND B.CD_ID ='SM_002'
|
||||
|
||||
@ -39,6 +39,24 @@
|
||||
<if test="serviceCode != null and serviceCode!=0"> AND A.IN_SERVICE_CODE = ${serviceCode}</if>
|
||||
<if test="sdate != null and sdate!=''"><![CDATA[ AND A.IN_RECEIPT_TIMESTAMP >= UNIX_TIMESTAMP("${sdate}")]]></if>
|
||||
<if test="edate != null and edate!=''"><![CDATA[ AND A.IN_RECEIPT_TIMESTAMP <= UNIX_TIMESTAMP("${edate}")]]></if>
|
||||
|
||||
<if test='approvalTargetYn != null and approvalTargetYn == "Y" '>
|
||||
AND A.IN_INCIDENT_SEQ IN ( SELECT A.IN_INCIDENT_SEQ
|
||||
FROM (
|
||||
SELECT IN_INCIDENT_SEQ
|
||||
, MIN(IN_ORDER) IN_ORDER
|
||||
FROM CM_INCIDENT_APPROVAL A
|
||||
WHERE DT_APPROVAL_DATETIME IS NULL
|
||||
GROUP BY IN_INCIDENT_SEQ
|
||||
) N
|
||||
, CM_INCIDENT_APPROVAL A
|
||||
WHERE A.IN_INCIDENT_SEQ = N.IN_INCIDENT_SEQ
|
||||
AND A.IN_ORDER = N.IN_ORDER
|
||||
AND IN_USER_SEQ = #{reqUser}
|
||||
)
|
||||
AND A.IN_INCIDENT_STATUS ='1'
|
||||
</if>
|
||||
|
||||
</sql>
|
||||
|
||||
<!-- 2025.12.18 나혁제 VC_REQ_INCIDENT_NUM 신청번호 추가 -->
|
||||
|
||||
@ -58,5 +58,21 @@
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectMenuScrnAuth" resultType="java.util.LinkedHashMap">
|
||||
|
||||
/* MainMenuManageDao.selectMenuScrnAuth */
|
||||
SELECT TASK_URL AS taskUrl
|
||||
, DTLS_TASK_URL AS dtlsTaskUrl
|
||||
, TASK_NM AS taskNm
|
||||
, DTLS_TASK_NM AS dtlsTaskNm
|
||||
, USE_YN AS useYn
|
||||
, RMK AS rmk
|
||||
FROM TB_MENU_SCRN_AUTH A
|
||||
WHERE (USE_YN IS NULL OR USE_YN != 'N')
|
||||
ORDER BY A.TASK_URL, A.DTLS_TASK_URL
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue
Block a user