login si signin done

This commit is contained in:
andrei-mihnea-cerbu
2024-01-13 03:18:17 +02:00
parent 7eb9cdd70d
commit a6a228ded9
26 changed files with 278 additions and 63 deletions
+53 -10
View File
@@ -1,27 +1,46 @@
import hashlib
import json
import tkinter as tk
from app.models.view_models.signup import SignupModel
from app.models.view_models import SignupModel
from app.http import request_builder
from app.models.http_models import SignupRequestModel
def hash_password(password):
sha256_hash = hashlib.sha256()
sha256_hash.update(password.encode('utf-8'))
hashed_output = sha256_hash.hexdigest()
return hashed_output
class SignupView(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.form_frame = None
self.define_http_params()
self.create_widgets()
def define_http_params(self):
self.url = "http://localhost:8000/auth/sign_up"
self.headers = {"Content-Type": "application/json"}
self.method = "POST"
self.params = None
def create_widgets(self):
# Create a frame to hold the entry fields and labels
form_frame = tk.Frame(self)
self.form_frame = tk.Frame(self)
# Error label
self.error_var = tk.StringVar() # Variable to store error message
self.error_label = tk.Label(form_frame, textvariable=self.error_var, fg="red")
self.error_label = tk.Label(self.form_frame, textvariable=self.error_var, fg="red")
self.error_label.grid(row=0, column=0, pady=5, columnspan=2) # Span columns for full width
# Left frame for labels
label_frame = tk.Frame(form_frame)
label_frame = tk.Frame(self.form_frame)
label_frame.grid(row=1, column=0, pady=5, padx=5, sticky="w")
# Right frame for entry widgets
entry_frame = tk.Frame(form_frame)
entry_frame = tk.Frame(self.form_frame)
entry_frame.grid(row=1, column=1, pady=5, padx=5, sticky="e")
# Username Label and Entry
@@ -46,10 +65,17 @@ class SignupView(tk.Frame):
self.password_entry.grid(row=2, column=0, pady=5, sticky="e")
# Signup Button
self.signup_button = tk.Button(form_frame, text="Signup", command=self.on_signup)
self.signup_button.grid(row=2, column=0, columnspan=2, pady=10) # Span columns for full width
self.signup_button = tk.Button(self.form_frame, text="Sign up", command=self.on_signup)
self.signup_button.grid(row=2, column=0, pady=10) # No columnspan for the signup button
form_frame.pack()
# Return to Main Menu Button
self.return_button = tk.Button(self.form_frame, text="Return to Main Menu", command=self.return_to_initial_view)
self.return_button.grid(row=2, column=1, pady=10, padx=5) # Place next to the signup button
self.form_frame.pack()
def return_to_initial_view(self):
self.master.change_to_initial_view()
def on_signup(self):
# Retrieve values from entry fields
@@ -64,5 +90,22 @@ class SignupView(tk.Frame):
self.error_var.set(errors[0])
self.error_label.grid(row=0, column=0, pady=5)
# Print or handle the values as needed
print(f"Username: {username}, Email: {email}, Password: {password}")
request_builder.set_url(self.url)
request_builder.set_headers(self.headers)
request_builder.set_params(self.params)
request_builder.set_body(
SignupRequestModel(
username=username,
email=email,
password=hash_password(password)
).__dict__)
request_builder.set_method(self.method)
result = request_builder.build().make_request()
if result.status_code == 200:
self.master.change_to_initial_view()
else:
json_data = json.loads(result.text)
detail_value = json_data.get('detail')
self.error_var.set(detail_value)
self.error_label.grid(row=0, column=0, pady=5)