jm_p_op

permission 본문

Node.js/Express

permission

jm_p_op 2024. 5. 13. 12:32

모든 api요청의 권한이 있음으로

defult값은 all로 잡자.

DB에 저장후 cache로 뽑아서 관리

  • 권한이 All 혹은 겹치는것이 있다면, true값 반환
async function PermissionAPICheck(api,user_perm){
    perms=await permissionAPI.get(api)
    if (!perms){
        return undefined
    }
    if (perms[0]=='All'){
        return true
    }
    for (i in user_perm){
        if (perms.includes(user_perm[i])){
            return true
        }
    }
    return false
}
  • 권한이 true이면 next를 통해 원래 url 실행
  • false이면 권한401.1 제공
  • undefine이면 url이 없는것으로 404에러 제공
  • req.log_in_user을 통해 로그인 정보 교환
router.use("", async (req, res, next)=>{
  //log_in
  let log_in_user = await jwt.verify(req.headers.authorization)
  req.log_in_user=log_in_user
  add={IP:req.ip,
      userId:log_in_user.id,
      url:req.method+req.url}
  UserIPLog.create(add)
  //permission
  if (add.url.slice(-1)=='/'){
    add.url=add.url.slice(0,-1)
  }
  let bool_permission=await permission.PermissionAPICheck(add.url,log_in_user.auth)
  if (bool_permission){
    next();
    }
  else if (bool_permission==false){
    if (log_in_user.response){
      return res.send(log_in_user)
    }
    else{
      res.send(await error_message.get(19))
    }
  }
  else{
    res.send(await error_message.get(20,add.url))
  }
  });

'Node.js > Express' 카테고리의 다른 글

fk으로 잡은 pk_column 변경하기  (0) 2024.05.16
multer - 파일 받기  (0) 2024.05.14
express - app  (0) 2024.05.09
error_message관리  (0) 2024.05.07
Excel을 통한 seed/migration데이터 관리  (0) 2024.05.06