kic ddlZddlmZmZmZmZmZddlmZm Z m Z m Z ddl m Z ddlZddlZiZe ddZedd e jd d d iZed ede jdd iZedee jdd e jdd e jdd e jdd dZedGddeZedGddeZedGddeZedGd d!eZdS)"N)requestjsonifyrender_templateredirecturl_for)ResourceApi Namespacefields)DBAuthu사용자 인증을 위한 API)name descriptionUseridz a User NameT)rrequiredexamplez User AuthpasswordPassword)rrz User reigsteremailsexphone)rruser_sexrz/idceZdZeddieddidZdS) AuthCheckSuccess responsesRegister Failedct}tjd}||}|dkrddidfSddidfS)Nrmessageu 중복 아이디가 있습니다r u"사용가능한 아이디입니다r)r rjson db_check_id)selfdbrvalues (D:\takensoft\project20_포트홀\auth.pypostzAuthCheck.post'se 44 \$ nnR   D===  ? N)__name__ __module__ __qualname__r docr*r+r)rr%s` XXi(X)) XX/0X11  21*)   r+rz /registerceZdZeeeddieddidZdS) AuthRegisterrrrr r!ct}tjd}tjd}tjd}tjd}tjd}tj|d}|||}|dkrddid fS||||||d |id fS) Nrrrrrutf-8r#r!r Authorizationr) r rr$hashlibsha256encode hexdigestdb_login db_add_id) r&r'rr user_emailrrpw_hasr(s r)r*zAuthRegister.post;s 44 \$ < +\'* l:& W% 8 899CCEEkk"X&& D==,  LLF:c% 8 8 8 r+N)r,r-r.r expectuser_fields_registerr/r*r0r+r)r2r29sx [[%&& XXi(X)) XX/0X1121*)'&r+r2z/loginceZdZeeeddieddieddidZd S) AuthLoginrrrizUser Not Foundr z Auth Failedct}tjd}tjd}tj|d}|||}|`|tj tj dzd}tj|dd }td |d Std d dS)Nrrr4F)seconds)rexpsecretHS256) algorithmsuccess)resulttokenfailu4아이디/비밀번호가 일치하지 않습니다.)rJmsg) r rr$r6r7r8r9r:datetimeutcnow timedeltajwtr)r&r'rrpw_hashrJpayloadrKs r)r*zAuthLogin.postSs 44 \$ < +.!9!9::DDFFR((   )0022X5GPR5S5S5SSGJwGDDDEi%@@AA Af5kllmm mr+N)r,r-r.r r>user_fields_authr/r*r0r+r)rArAQs [[!"" XXi(X)) XX./X00 XXm,X--nn.-10*)#"nnnr+rAz /secessionceZdZdZdS) AuthSecessionct}tjd}tj|ddg}||dddiS)NrKrFrG) algorithmsr secessionrI)r rr$rQdecode db_delete_id)r&r'rrSs r)r*zAuthSecession.postjsP DDl7#:b(yAAA  ' ' 'Y' 'r+N)r,r-r.r*r0r+r)rVrVhs#(((((r+rV)r6flaskrrrrr flask_restxrr r r database.databaser rNrQusersr modelString user_fieldsinheritrTr?routerr2rArVr0r+r)resBBBBBBBBBBBBBB888888888888  y 0 jj-&-MD$ O O O" << [  *tDDD; ||O[ *tDDDmfmhoz~NNNMZMSMZglw{M|M|M|FSFLFS`grvFwFwFwCCE&K8.Hnnnnnnnn,L(((((H(((((r+