Gregniuki commited on
Commit
cb6494b
·
1 Parent(s): 16a87c0

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +23 -14
main.py CHANGED
@@ -3,6 +3,7 @@
3
  from fastapi import FastAPI, Form, Depends, HTTPException
4
  from fastapi.requests import Request
5
  from fastapi.responses import HTMLResponse, RedirectResponse
 
6
  from fastapi.templating import Jinja2Templates
7
  from sqlalchemy.orm import Session
8
  from auth import verify_token, oauth2_scheme, auth_views, register, UserCreate, authenticate_user, get_user_by_verification_token
@@ -43,52 +44,60 @@ async def login(request: Request):
43
  @app.post("/login", response_class=HTMLResponse)
44
  async def login_post(
45
  request: Request,
46
- email: str = Form(...),
47
- password: str = Form(...),
48
  db: Session = Depends(get_db)
49
  ):
 
 
 
50
  # Validate the email and password
51
  if not email or not password:
52
  raise HTTPException(status_code=400, detail="Invalid email or password")
53
 
54
- # Check user authentication (You should implement this function)
55
  user = authenticate_user(db, email, password)
56
-
57
  if user is not None:
58
  # Authentication succeeded
59
  # Create an access token and handle login success
60
- # You can use your access token creation logic here
61
  access_token = auth_views.create_access_token(
62
  data={"sub": user.email},
63
  expires_delta=timedelta(minutes=auth_views.ACCESS_TOKEN_EXPIRE_MINUTES),
64
  )
65
- # Set the access_token (if desired)
 
66
  user.token = access_token
 
 
67
  db.commit()
68
- # Redirect to a protected page or handle the login success as needed
69
- return RedirectResponse("/protected")
 
70
  else:
71
  # Authentication failed
72
  # Handle login failure, e.g., display an error message
73
- return templates.TemplateResponse("login.html", {"request": request, "error_message": "Invalid email or password"})
74
- #return RedirectResponse("/login?error=Authentication failed")
75
 
76
  @app.get("/register", response_class=HTMLResponse)
77
  async def register_get(request: Request):
78
  return templates.TemplateResponse("register.html", {"request": request})
79
 
 
80
  @app.post("/register", response_class=HTMLResponse)
81
  async def register_post(
82
  request: Request,
83
- username: str = Form(...),
84
- email: str = Form(...),
85
- password: str = Form(...),
86
- confirm_password: str = Form(...),
87
  db: Session = Depends(get_db)
88
  ):
 
 
 
 
 
89
  user = UserCreate(username=username, email=email, password=password, confirm_password=confirm_password)
90
  registered_user = register(user, db)
91
  return RedirectResponse("/registration_successful")
 
92
 
93
  @app.post("/registration_successful", response_class=HTMLResponse)
94
  async def registration_successful(request: Request):
 
3
  from fastapi import FastAPI, Form, Depends, HTTPException
4
  from fastapi.requests import Request
5
  from fastapi.responses import HTMLResponse, RedirectResponse
6
+ from fastapi.security import OAuth2PasswordRequestForm
7
  from fastapi.templating import Jinja2Templates
8
  from sqlalchemy.orm import Session
9
  from auth import verify_token, oauth2_scheme, auth_views, register, UserCreate, authenticate_user, get_user_by_verification_token
 
44
  @app.post("/login", response_class=HTMLResponse)
45
  async def login_post(
46
  request: Request,
47
+ form_data: OAuth2PasswordRequestForm = Depends(),
 
48
  db: Session = Depends(get_db)
49
  ):
50
+ email = form_data.username
51
+ password = form_data.password
52
+
53
  # Validate the email and password
54
  if not email or not password:
55
  raise HTTPException(status_code=400, detail="Invalid email or password")
56
 
57
+ # Check user authentication using the provided email and password
58
  user = authenticate_user(db, email, password)
59
+
60
  if user is not None:
61
  # Authentication succeeded
62
  # Create an access token and handle login success
 
63
  access_token = auth_views.create_access_token(
64
  data={"sub": user.email},
65
  expires_delta=timedelta(minutes=auth_views.ACCESS_TOKEN_EXPIRE_MINUTES),
66
  )
67
+
68
+ # Set the access_token (if desired)
69
  user.token = access_token
70
+
71
+ # Commit the changes to the database
72
  db.commit()
73
+
74
+ # Handle the login success as needed
75
+ return templates.TemplateResponse("protected.html", {"request": request, "user": user.username})
76
  else:
77
  # Authentication failed
78
  # Handle login failure, e.g., display an error message
79
+ return templates.TemplateResponse("login.html", {"request": request, "error_message": "Invalid email or password"})
 
80
 
81
  @app.get("/register", response_class=HTMLResponse)
82
  async def register_get(request: Request):
83
  return templates.TemplateResponse("register.html", {"request": request})
84
 
85
+
86
  @app.post("/register", response_class=HTMLResponse)
87
  async def register_post(
88
  request: Request,
89
+ form_data: OAuth2PasswordRequestForm = Depends(),
 
 
 
90
  db: Session = Depends(get_db)
91
  ):
92
+ username = form_data.username
93
+ email = form_data.email
94
+ password = form_data.password
95
+ confirm_password = form_data.password
96
+
97
  user = UserCreate(username=username, email=email, password=password, confirm_password=confirm_password)
98
  registered_user = register(user, db)
99
  return RedirectResponse("/registration_successful")
100
+
101
 
102
  @app.post("/registration_successful", response_class=HTMLResponse)
103
  async def registration_successful(request: Request):