Files
weibo_signin/backend/auth_service/app/__pycache__/main.cpython-311.pyc

120 lines
9.1 KiB
Plaintext
Raw Normal View History

2026-03-09 14:05:00 +08:00
<EFBFBD>
X<>i<EFBFBD><00><00><><00>dZddlmZmZmZmZmZddlmZddl m
Z
m Z ddl m Z ddlmZddlZddlZddlZddlmZmZdd lmZdd
lmZmZmZmZmZmZdd lm Z dd l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ej(e)<29><00>Z*ed dddd<11><12><00>Z+e+<2B>,eddgddgdg<01><17><00>e
<EFBFBD><00>Z-ee-<2D><00>ee<14><00>fde de defd<1B>Z.e+<2B>/d<1C><00>d<1D><00><00>Z0e+<2B>1d<1E><00>d<1F><00><00>Z2e+<2B>1d <20><00>d!<21><00><00>Z3e+<2B>4d"eej5<00>#<23><00>ee<14><00>fd$ede fd%<25><05><00>Z6e+<2B>4d&e<1C>'<27><00>ee<14><00>fd(ede fd)<29><05><00>Z7e+<2B>4d*e<1C>'<27><00>ee<14><00>fd+ede fd,<2C><05><00>Z8e+<2B>1d-e<1B>'<27><00>ee.<2E><00>fd.efd/<2F><05><00>Z9dS)0zK
Weibo-HotSign Authentication Service
Main FastAPI application entry point
<EFBFBD>)<05>FastAPI<50>Depends<64> HTTPException<6F>status<75>Security)<01>CORSMiddleware)<02>
HTTPBearer<EFBFBD>HTTPAuthorizationCredentials)<01> AsyncSession)<01>selectN)<02>get_db<64>User<65><01> create_tables)<06>
UserCreate<EFBFBD> UserLogin<69> UserResponse<73>Token<65> TokenData<74>RefreshTokenRequest)<01> AuthService)<06>verify_password<72>create_access_token<65>decode_access_token<65>create_refresh_token<65>verify_refresh_token<65>revoke_refresh_token<65>$Weibo-HotSign Authentication ServicezFHandles user authentication and authorization for Weibo-HotSign system<65>1.0.0z/docsz/redoc)<05>title<6C> description<6F>version<6F>docs_url<72> redoc_urlzhttp://localhost:3000zhttp://localhost:80T<30>*)<04> allow_origins<6E>allow_credentials<6C> allow_methods<64> allow_headers<72> credentials<6C>db<64>returnc<00><00><>K<00>|j}t|<02><00>}|<03>ttjdddi<01><05><00><00>|<03>d<06><00>}|sttjdddi<01><05><00><00>t |<01><00>}|<05>|<04><00><00>d{V<00><03>}|<06>ttjd<08> <09><00><00>|j sttj
d
<EFBFBD> <09><00><00>tj |<06><00>S) z7
Dependency to get current user from JWT token
NzInvalid or expired tokenzWWW-Authenticate<74>Bearer)<03> status_code<64>detail<69>headers<72>subzInvalid token payloadzUser not found<6E>r/r0<00>User account is deactivated) r*rrr<00>HTTP_401_UNAUTHORIZED<45>getr<00>get_user_by_id<69>HTTP_404_NOT_FOUND<4E> is_active<76>HTTP_403_FORBIDDENr<00>from_orm)r*r+<00>token<65>payload<61>user_id<69> auth_service<63>users <20>.D:\code\weibo\backend\auth_service\app\main.py<70>get_current_userrB2s#<00><00><00><00> <18> #<23>E<EFBFBD>!<21>%<25>(<28>(<28>G<EFBFBD><0E><EFBFBD><1B><1E>4<>-<2D>'<27><18>2<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <16>k<EFBFBD>k<EFBFBD>%<25> <20> <20>G<EFBFBD> <12>
<EFBFBD><1B><1E>4<>*<2A>'<27><18>2<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <1F>r<EFBFBD>?<3F>?<3F>L<EFBFBD><1D>,<2C>,<2C>W<EFBFBD>5<>5<> 5<> 5<> 5<> 5<> 5<> 5<>D<EFBFBD> <0B>|<7C><1B><1E>1<>#<23>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<10>><3E>
<EFBFBD><1B><1E>1<>0<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<18> <20><14> &<26> &<26>&<26><00>startupc<00><00>2K<00>t<00><00><00>d{V<00><03>dS)z%Initialize database tables on startupNr<00>rCrA<00> startup_eventrG\s*<00><00><00><00> <18>/<2F>/<2F><19><19><19><19><19><19><19><19>rC<00>/c<00><00>K<00>dddd<04>S)Nr<00>runningr)<03>servicerr"rFrFrCrA<00>rootrLas <00><00><00><00>:<3A><1B><1A> <06> <06>rCz/healthc<00><00>K<00>ddiS)Nr<00>healthyrFrFrCrA<00> health_checkrOis<00><00><00><00> <14>i<EFBFBD> <20> rCz/auth/register)<02>response_modelr/<00> user_datac<00><00><>K<00>t|<01><00>}|<02>|j|j<00><00><00>d{V<00><03>\}}|rt t
jd<02><03><00><00>|rt t
jd<04><03><00><00> |<02>|<00><00><00>d{V<00><03>}tj |<05><00>S#t$r0}t t
j dt|<06><00><00><00><02><03><00><00>d}~wwxYw)z%
Register a new user account
Nz#User with this email already existsr3zUsername already takenzFailed to create user: ) r<00>check_user_exists<74>email<69>usernamerr<00>HTTP_409_CONFLICT<43> create_userrr;<00> Exception<6F>HTTP_500_INTERNAL_SERVER_ERROR<4F>str)rQr+r?<00>
email_user<EFBFBD> username_userr@<00>es rA<00> register_userr^ms!<00><00><00><00>
<1F>r<EFBFBD>?<3F>?<3F>L<EFBFBD>'3<>&D<>&D<>Y<EFBFBD>_<EFBFBD>V_<56>Vh<56>&i<>&i<> i<> i<> i<> i<> i<> i<><1D>J<EFBFBD> <0A><11>
<EFBFBD><1B><1E>0<>8<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<15>
<EFBFBD><1B><1E>0<>+<2B>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> 
<EFBFBD>!<21>-<2D>-<2D>i<EFBFBD>8<>8<>8<>8<>8<>8<>8<>8<><04><1B>$<24>T<EFBFBD>*<2A>*<2A>*<2A><> <14>
<EFBFBD>
<EFBFBD>
<EFBFBD><1B><1E>=<3D>5<>S<EFBFBD><11>V<EFBFBD>V<EFBFBD>5<>5<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>s<00>6.B%<00>%
C<03>/+C<03>Cz /auth/login)rP<00>
login_datac<00><00>K<00>t|<01><00>}|<02>|j<00><00><00>d{V<00><03>}|sttjd<02><03><00><00>t |j|j<00><00>sttjd<02><03><00><00>|j sttj
d<04><03><00><00>tt|j <00><00>|jd<05><02><06><00>}tt|j <00><00><00><00><00>d{V<00><03>}t!||dd<08> <09><00>S)
z0
Authenticate user and return JWT token
NzInvalid email or passwordr3r4<00>r2rU<00><01>data<74>bearer<65><00><04> access_token<65> refresh_token<65>
token_type<EFBFBD>
expires_in)r<00>get_user_by_emailrTrrr5r<00>password<72>hashed_passwordr9r:rrZ<00>idrUrr)r_r+r?r@rgrhs rA<00>
login_userro<00>s;<00><00><00><00>
<1F>r<EFBFBD>?<3F>?<3F>L<EFBFBD><1E>/<2F>/<2F>
<EFBFBD>0@<40>A<>A<> A<> A<> A<> A<> A<> A<>D<EFBFBD> <0F>
<EFBFBD><1B><1E>4<>.<2E>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <1B>:<3A>.<2E><04>0D<30> E<> E<>
<EFBFBD><1B><1E>4<>.<2E>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <10>><3E>
<EFBFBD><1B><1E>1<>0<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> '<27>C<EFBFBD><04><07>L<EFBFBD>L<EFBFBD>d<EFBFBD>m<EFBFBD>,\<5C>,\<5C>]<5D>]<5D>]<5D>L<EFBFBD>/<2F>s<EFBFBD>4<EFBFBD>7<EFBFBD>|<7C>|<7C><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C>M<EFBFBD> <10>!<21>#<23><1B><17>  <06> <06> <06>rCz /auth/refresh<73>bodyc<00><00> K<00>t|j<00><00><00>d{V<00><03>}|<02>ttjd<02><03><00><00>t |<01><00>}|<03>|<02><00><00>d{V<00><03>}|<04>|jsttjd<04><03><00><00>t|j<00><00><00>d{V<00><03>tt|j <00><00>|j d<05><02><06><00>}tt|j <00><00><00><00><00>d{V<00><03>}t||dd<08> <09><00>S)
z<EFBFBD>
Exchange a valid refresh token for a new access + refresh token pair (Token Rotation).
The old refresh token is revoked immediately.
Nz Invalid or expired refresh tokenr3zUser not found or deactivatedrarbrdrerf)rrhrrr5rr7r9rrrZrnrUrr)rpr+r>r?r@<00>
new_access<EFBFBD> new_refreshs rArhrh<00>s=<00><00><00><00>)<29><14>);<3B><<3C><<3C><<3C><<3C><<3C><<3C><<3C><<3C>G<EFBFBD><0E><EFBFBD><1B><1E>4<>5<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <1F>r<EFBFBD>?<3F>?<3F>L<EFBFBD><1D>,<2C>,<2C>W<EFBFBD>5<>5<> 5<> 5<> 5<> 5<> 5<> 5<>D<EFBFBD> <0B>|<7C>4<EFBFBD>><3E>|<7C><1B><1E>4<>2<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD> <1F>t<EFBFBD>1<>
2<EFBFBD>
2<EFBFBD>2<>2<>2<>2<>2<>2<>2<>$<24>#<23>d<EFBFBD>g<EFBFBD>,<2C>,<2C>D<EFBFBD>M<EFBFBD>*Z<>*Z<>[<5B>[<5B>[<5B>J<EFBFBD>,<2C>S<EFBFBD><14><17>\<5C>\<5C>:<3A>:<3A>:<3A>:<3A>:<3A>:<3A>:<3A>:<3A>K<EFBFBD> <10><1F>!<21><1B><17>  <06> <06> <06>rCz/auth/me<6D> current_userc<00><00>
K<00>|S)z&
Get current user information
rF)rts rA<00>get_current_user_inforv<00>s<00><00><00><00>
<18>rC):<3A>__doc__<5F>fastapirrrrr<00>fastapi.middleware.corsr<00>fastapi.securityr r
<00>sqlalchemy.ext.asyncior <00>
sqlalchemyr <00>uvicorn<72>os<6F>logging<6E> shared.modelsr r<00> auth_service.app.models.databaser<00>auth_service.app.schemas.userrrrrrr<00>&auth_service.app.services.auth_servicer<00>auth_service.app.utils.securityrrrrrr<00> getLogger<65>__name__<5F>logger<65>app<70>add_middleware<72>securityrB<00>on_eventrGr6rLrO<00>post<73>HTTP_201_CREATEDr^rorhrvrFrCrA<00><module>r<>s<00><01><04><04>
F<01>E<>E<>E<>E<>E<>E<>E<>E<>E<>E<>E<>E<>E<>2<>2<>2<>2<>2<>2<>E<>E<>E<>E<>E<>E<>E<>E<>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><1D><1D><1D><1D><1D><1D><0E><0E><0E><0E> <09> <09> <09> <09><0E><0E><0E><0E>&<26>&<26>&<26>&<26>&<26>&<26>&<26>&<26>:<3A>:<3A>:<3A>:<3A>:<3A>:<3A><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02>?<3F>><3E>><3E>><3E>><3E>><3E><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02>
<1B><17> <1A>8<EFBFBD> $<24> $<24><06><0E>g<EFBFBD>
0<EFBFBD>X<> <13> <14><16> <02><02><02><03><04><12><12><12>*<2A>,A<>B<><1A><16>%<25><16>%<25> <13><02><02><02> <16>:<3A><<3C><<3C><08>19<31><08><18>0B<30>0B<30><1E>w<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>('<27>('<27>-<2D>('<27><14>('<27><12>('<27>('<27>('<27>('<27>T<05><1C><1C>i<EFBFBD><18><18><1A><1A><19><18><1A><05><17><17><13><1C><1C><06><06><0E><1C><06><05><17><17><19><13><13>!<21>!<21><14><13>!<21><05><18><18>
<1A><<3C>V<EFBFBD>E\<5C><18>]<5D>]<5D>BI<42>'<27>&<26>/<2F>/<2F>
<EFBFBD>
<EFBFBD>:<3A>
<EFBFBD><<3C>
<EFBFBD>
<EFBFBD>
<EFBFBD>^<01>]<5D>
<EFBFBD>><05><18><18>-<2D><05><18>.<2E>.<2E>?F<>w<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>'<06>'<06><19>'<06> <0C>'<06>'<06>'<06>/<2F>.<2E>'<06>R<05><18><18>/<2F>%<25><18>0<>0<>FM<46>g<EFBFBD>f<EFBFBD>o<EFBFBD>o<EFBFBD> <06> <06>1<> <06>|<7C> <06> <06> <06>1<>0<> <06>D<05><17><17><1A>L<EFBFBD><17>1<>1<>=D<>W<EFBFBD>EU<45>=V<>=V<><18><18>l<EFBFBD><18><18><18>2<>1<><18><18>rC