Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0aa1e24

Browse files
committed
updated
1 parent52f1e05 commit0aa1e24

File tree

5 files changed

+24
-21
lines changed

5 files changed

+24
-21
lines changed

‎app/models.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importuuid
12
from .databaseimportBase
23
fromsqlalchemyimportTIMESTAMP,Column,ForeignKey,String,Boolean,text
34
fromsqlalchemy.dialects.postgresqlimportUUID
@@ -6,8 +7,8 @@
67

78
classUser(Base):
89
__tablename__='users'
9-
id=Column(UUID,primary_key=True,nullable=False,
10-
server_default=text("uuid_generate_v4()"))
10+
id=Column(UUID(as_uuid=True),primary_key=True,nullable=False,
11+
default=uuid.uuid4)
1112
name=Column(String,nullable=False)
1213
email=Column(String,unique=True,nullable=False)
1314
password=Column(String,nullable=False)
@@ -22,9 +23,9 @@ class User(Base):
2223

2324
classPost(Base):
2425
__tablename__='posts'
25-
id=Column(UUID,primary_key=True,nullable=False,
26-
server_default=text("uuid_generate_v4()"))
27-
user_id=Column(UUID,ForeignKey(
26+
id=Column(UUID(as_uuid=True),primary_key=True,nullable=False,
27+
default=uuid.uuid4)
28+
user_id=Column(UUID(as_uuid=True),ForeignKey(
2829
'users.id',ondelete='CASCADE'),nullable=False)
2930
title=Column(String,nullable=False)
3031
content=Column(String,nullable=False)

‎app/oauth2.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class Settings(BaseModel):
1616
authjwt_token_location:set= {'cookies','headers'}
1717
authjwt_access_cookie_key:str='access_token'
1818
authjwt_refresh_cookie_key:str='refresh_token'
19+
authjwt_cookie_csrf_protect:bool=False
1920
authjwt_public_key:str=base64.b64decode(
2021
settings.JWT_PUBLIC_KEY).decode('utf-8')
2122
authjwt_private_key:str=base64.b64decode(

‎app/routers/auth.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ def login(payload: schemas.LoginUserSchema, response: Response, db: Session = De
6161

6262
# Create access token
6363
access_token=Authorize.create_access_token(
64-
subject=user.id,expires_time=timedelta(minutes=ACCESS_TOKEN_EXPIRES_IN))
64+
subject=str(user.id),expires_time=timedelta(minutes=ACCESS_TOKEN_EXPIRES_IN))
6565

6666
# Create refresh token
6767
refresh_token=Authorize.create_refresh_token(
68-
subject=user.id,expires_time=timedelta(minutes=REFRESH_TOKEN_EXPIRES_IN))
68+
subject=str(user.id),expires_time=timedelta(minutes=REFRESH_TOKEN_EXPIRES_IN))
6969

7070
# Store refresh and access tokens in cookie
7171
response.set_cookie('access_token',access_token,ACCESS_TOKEN_EXPIRES_IN*60,
@@ -82,7 +82,6 @@ def login(payload: schemas.LoginUserSchema, response: Response, db: Session = De
8282
@router.get('/refresh')
8383
defrefresh_token(response:Response,request:Request,Authorize:AuthJWT=Depends(),db:Session=Depends(get_db)):
8484
try:
85-
print(Authorize._refresh_cookie_key)
8685
Authorize.jwt_refresh_token_required()
8786

8887
user_id=Authorize.get_jwt_subject()
@@ -94,7 +93,7 @@ def refresh_token(response: Response, request: Request, Authorize: AuthJWT = Dep
9493
raiseHTTPException(status_code=status.HTTP_401_UNAUTHORIZED,
9594
detail='The user belonging to this token no logger exist')
9695
access_token=Authorize.create_access_token(
97-
subject=user_id,expires_time=timedelta(minutes=ACCESS_TOKEN_EXPIRES_IN))
96+
subject=str(user.id),expires_time=timedelta(minutes=ACCESS_TOKEN_EXPIRES_IN))
9897
exceptExceptionase:
9998
error=e.__class__.__name__
10099
iferror=='MissingTokenError':

‎app/routers/post.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
fromtypingimportList
2-
fromappimportoauth2
1+
importuuid
32
from ..importschemas,models
43
fromsqlalchemy.ormimportSession
54
fromfastapiimportDepends,HTTPException,status,APIRouter,Response
65
from ..databaseimportget_db
6+
fromapp.oauth2importrequire_user
77

88
router=APIRouter()
99

1010

11-
@router.get("/")
12-
defget_posts(db:Session=Depends(get_db),limit:int=10,page:int=1,search:str=''):
11+
@router.get('/')
12+
defget_posts(db:Session=Depends(get_db),limit:int=10,page:int=1,search:str='',user_id:str=Depends(require_user)):
1313
skip= (page-1)*limit
1414

1515
posts=db.query(models.Post).group_by(models.Post.id).filter(
@@ -18,16 +18,17 @@ def get_posts(db: Session = Depends(get_db), limit: int = 10, page: int = 1, sea
1818

1919

2020
@router.post('/',status_code=status.HTTP_201_CREATED,response_model=schemas.PostResponse)
21-
defcreate_post(post:schemas.CreatePostSchema,db:Session=Depends(get_db),user_id:str=Depends(oauth2.require_user)):
22-
new_post=models.Post(**post.dict(),user_id=user_id)
21+
defcreate_post(post:schemas.CreatePostSchema,db:Session=Depends(get_db),owner_id:str=Depends(require_user)):
22+
post.user_id=uuid.UUID(owner_id)
23+
new_post=models.Post(**post.dict())
2324
db.add(new_post)
2425
db.commit()
2526
db.refresh(new_post)
2627
returnnew_post
2728

2829

2930
@router.put('/{id}',response_model=schemas.PostResponse)
30-
defupdate_post(id:str,post:schemas.CreatePostSchema,db:Session=Depends(get_db),user_id:str=Depends(oauth2.require_user)):
31+
defupdate_post(id:str,post:schemas.CreatePostSchema,db:Session=Depends(get_db),user_id:str=Depends(require_user)):
3132
post_query=db.query(models.Post).filter(models.Post.id==id)
3233
updated_post=post_query.first()
3334

@@ -43,7 +44,7 @@ def update_post(id: str, post: schemas.CreatePostSchema, db: Session = Depends(g
4344

4445

4546
@router.get('/{id}',response_model=schemas.PostResponse)
46-
defget_post(id:str,db:Session=Depends(get_db),user_id:str=Depends(oauth2.require_user)):
47+
defget_post(id:str,db:Session=Depends(get_db),user_id:str=Depends(require_user)):
4748
post=db.query(models.Post).filter(models.Post.id==id).first()
4849
ifnotpost:
4950
raiseHTTPException(status_code=status.HTTP_404_NOT_FOUND,
@@ -52,7 +53,7 @@ def get_post(id: str, db: Session = Depends(get_db), user_id: str = Depends(oaut
5253

5354

5455
@router.delete('/{id}')
55-
defdelete_post(id:int,db:Session=Depends(get_db),user_id:str=Depends(oauth2.require_user)):
56+
defdelete_post(id:str,db:Session=Depends(get_db),user_id:str=Depends(require_user)):
5657
post_query=db.query(models.Post).filter(models.Post.id==id)
5758
post=post_query.first()
5859
ifnotpost:

‎app/schemas.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
fromdatetimeimportdatetime
2+
importuuid
23
frompydanticimportBaseModel,EmailStr,constr
34

45

@@ -24,7 +25,7 @@ class LoginUserSchema(BaseModel):
2425

2526

2627
classUserResponse(UserBaseSchema):
27-
id:str
28+
id:uuid.UUID
2829
created_at:datetime
2930
updated_at:datetime
3031

@@ -34,7 +35,7 @@ class PostBaseSchema(BaseModel):
3435
content:str
3536
category:str
3637
image:str
37-
user_id:str|None=None
38+
user_id:uuid.UUID|None=None
3839

3940
classConfig:
4041
orm_mode=True
@@ -45,7 +46,7 @@ class CreatePostSchema(PostBaseSchema):
4546

4647

4748
classPostResponse(PostBaseSchema):
48-
id:str
49+
id:uuid.UUID
4950
user:UserResponse
5051
created_at:datetime
5152
updated_at:datetime

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp