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

129 lines
9.5 KiB
Plaintext
Raw Normal View History

2026-03-09 14:05:00 +08:00
<EFBFBD>
2026-03-09 16:10:29 +08:00
<00>o<EFBFBD>iH<00><00><><00>dZddlmZmZmZmZmZddlmZddl m
2026-03-09 14:05:00 +08:00
Z
m Z ddl m Z ddlmZddlZddlZddlZddlmZmZdd lmZdd
2026-03-09 16:10:29 +08:00
lmZmZmZmZmZmZmZdd l m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(ej)e*<2A><00>Z+ed dddd<11><12><00>Z,e,<2C>-eddgddgdg<01><17><00>e
<EFBFBD><00>Z.ee.<2E><00>ee<14><00>fde de defd<1B>Z/e,<2C>0d<1C><00>d<1D><00><00>Z1e,<2C>2d<1E><00>d<1F><00><00>Z3e,<2C>2d <20><00>d!<21><00><00>Z4e,<2C>5d"eej6<00>#<23><00>ee<14><00>fd$ede fd%<25><05><00>Z7e,<2C>5d&e<1F>'<27><00>ee<14><00>fd(ede fd)<29><05><00>Z8e,<2C>5d*e<1C>'<27><00>ee<14><00>fd+ede fd,<2C><05><00>Z9e,<2C>2d-e<1B>'<27><00>ee/<2F><00>fd.efd/<2F><05><00>Z:dS)0zK
2026-03-09 14:05:00 +08:00
Weibo-HotSign Authentication Service
Main FastAPI application entry point
<EFBFBD>)<05>FastAPI<50>Depends<64> HTTPException<6F>status<75>Security)<01>CORSMiddleware)<02>
2026-03-09 16:10:29 +08:00
HTTPBearer<EFBFBD>HTTPAuthorizationCredentials)<01> AsyncSession)<01>selectN)<02>get_db<64>User)<01> create_tables)<07>
UserCreate<EFBFBD> UserLogin<69> UserResponse<73>Token<65> TokenData<74>RefreshTokenRequest<73> AuthResponse)<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
2026-03-09 14:05:00 +08:00
d
<EFBFBD> <09><00><00>tj |<06><00>S) z7
Dependency to get current user from JWT token
2026-03-09 16:10:29 +08:00
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<>
2026-03-09 14:05:00 +08:00
<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>
2026-03-09 16:10:29 +08:00
<18> <20><14> &<26> &<26>&<26><00>startupc<00><00>
K<00>dS)z%Initialize database tables on startupN<70>rFrCrA<00> startup_eventrG\s <00><00><00><00>
 <09>DrC<00>/c<00><00>K<00>dddd<04>S)Nr<00>runningr)<03>servicerr"rFrFrCrA<00>rootrLcs <00><00><00><00>:<3A><1B><1A> <06> <06>rCz/healthc<00><00>K<00>ddiS)Nr<00>healthyrFrFrCrA<00> health_checkrOks<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
2026-03-09 14:05:00 +08:00
jd<02><03><00><00>|rt t
2026-03-09 16:10:29 +08:00
jd<04><03><00><00> |<02>|<00><00><00>d{V<00><03>}tt|j
<00><00>|jd<05><02><06><00>}tt|j
<00><00><00><00><00>d{V<00><03>}t||ddtj|<05><00><00> <09><00>S#t$r0}t t
jd
t|<08><00><00><00><02><03><00><00>d}~wwxYw) z7
Register a new user account and return tokens
Nz#User with this email already existsr3zUsername already taken<65>r2<00>username<6D><01>data<74>bearer<65><00><05> access_token<65> refresh_token<65>
token_type<EFBFBD>
expires_inr@zFailed to create user: )r<00>check_user_exists<74>emailrTrr<00>HTTP_409_CONFLICT<43> create_userr<00>str<74>idrrrr;<00> Exception<6F>HTTP_500_INTERNAL_SERVER_ERROR) rQr+r?<00>
email_user<EFBFBD> username_userr@rZr[<00>es rA<00> register_userrios<><00><00><00><00>
2026-03-09 14:05:00 +08: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>
2026-03-09 16:10:29 +08:00
<EFBFBD> 
<EFBFBD>!<21>-<2D>-<2D>i<EFBFBD>8<>8<>8<>8<>8<>8<>8<>8<><04>+<2B><03>D<EFBFBD>G<EFBFBD> <0C> <0C>RV<52>R_<52>0`<60>0`<60>a<>a<>a<> <0C>2<>3<EFBFBD>t<EFBFBD>w<EFBFBD><<3C><<3C>@<40>@<40>@<40>@<40>@<40>@<40>@<40>@<40> <0A><1B>%<25>'<27><1F><1B><1D>&<26>t<EFBFBD>,<2C>,<2C> 
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD><EFBFBD> <15>
2026-03-09 14:05:00 +08:00
<EFBFBD>
<EFBFBD>
<EFBFBD><1B><1E>=<3D>5<>S<EFBFBD><11>V<EFBFBD>V<EFBFBD>5<>5<>
<EFBFBD>
<EFBFBD>
<EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2026-03-09 16:10:29 +08:00
<EFBFBD><EFBFBD><EFBFBD>s<00>6BD<00>
E<03>+D=<03>=Ez /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!||ddt#j|<03><00><00> <09><00>S)
z?
Authenticate user and return JWT token with user info
NzInvalid email or passwordr3r4rSrUrWrXrY)r<00>get_user_by_emailr_rrr5r<00>password<72>hashed_passwordr9r:rrbrcrTrrrr;)rjr+r?r@rZr[s rA<00>
login_userro<00>sI<00><00><00><00>
2026-03-09 14:05:00 +08: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>
2026-03-09 16:10:29 +08:00
<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> <17>!<21>#<23><1B><17> <19> "<22>4<EFBFBD> (<28> (<28>  <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)
2026-03-09 14:05:00 +08:00
z<EFBFBD>
Exchange a valid refresh token for a new access + refresh token pair (Token Rotation).
The old refresh token is revoked immediately.
2026-03-09 16:10:29 +08:00
Nz Invalid or expired refresh tokenr3zUser not found or deactivatedrSrUrWrX)rZr[r\r])rr[rrr5rr7r9rrrbrcrTrr)rpr+r>r?r@<00>
new_access<EFBFBD> new_refreshs rAr[r[<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<>
2026-03-09 14:05:00 +08:00
<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
2026-03-09 16:10:29 +08:00
rF)rts rA<00>get_current_user_inforv<00>s<00><00><00><00>
<18>rC);<3B>__doc__<5F>fastapirrrrr<00>fastapi.middleware.corsr<00>fastapi.securityr r
2026-03-09 14:05:00 +08:00
<00>sqlalchemy.ext.asyncior <00>
2026-03-09 16:10:29 +08:00
sqlalchemyr <00>uvicorn<72>os<6F>logging<6E> shared.modelsr r<00> auth_service.app.models.databaser<00>auth_service.app.schemas.userrrrrrrr<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_CREATEDriror[rvrFrCrA<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><02><02>?<3F>><3E>><3E>><3E>><3E>><3E><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02><02>
2026-03-09 14:05:00 +08:00
<1B><17> <1A>8<EFBFBD> $<24> $<24><06><0E>g<EFBFBD>
2026-03-09 16:10:29 +08:00
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> <09> <09><19><18> <09> <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>T<05><18><18>-<2D> <0C><18>5<>5<>?F<>w<EFBFBD>v<EFBFBD><EFBFBD><EFBFBD>(<06>(<06><19>(<06> <0C>(<06>(<06>(<06>6<>5<>(<06>T<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