Skip to content

Commit

Permalink
update signup and login ui
Browse files Browse the repository at this point in the history
  • Loading branch information
chriswebb09 committed Oct 13, 2023
1 parent d3e8044 commit 48929fa
Show file tree
Hide file tree
Showing 6 changed files with 118 additions and 118 deletions.
2 changes: 1 addition & 1 deletion DirectReport/browserview/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ def request_loader(request):
@login_required
def account():
print(current_user.is_authenticated())
return render_template('account.html', title='Account')
return render_template('account.html', title='Account', name=current_user.username, userid=current_user.id)

@login_manager.unauthorized_handler
def unauthorized_handler():
Expand Down
1 change: 0 additions & 1 deletion DirectReport/browserview/templates/_navigation.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
{% else %}
<li><a class="px-6 text-xl hover:text-gray-200" href="/login">Login</a></li>
{% endif %}

</ul>
</div>
</nav>
15 changes: 7 additions & 8 deletions DirectReport/browserview/templates/account.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,29 +17,28 @@
<div class="grid grid-cols-3 gap-1 mb-20 mx-10">
<div class="col-span-1 justify-center my-10">
<div class="self-center bg-blue-200 py-10 px-10 my-5">
<h1 class="text-center py-10 bg-blue-50">Account</h1>
<p class="text-center">Account page body content</p>
<h1 class="text-center py-10 bg-blue-50">Account: {{ name }}</h1>
<p class="text-center">{{ userid }} content</p>
</div>
</div>
<div class="col-span-1 justify-center my-10">
<div class="self-center bg-blue-200 py-10 py-10 px-10 my-5">
<h1 class="text-center py-10 bg-blue-50">Account</h1>
<h1 class="text-center py-10 bg-blue-50">Account: {{ name }}</h1>
<form method="GET" action="/logout">
<button class="button is-block is-info is-large is-fullwidth">Logout</button>
</form>
{#<p class="text-center">Account page body content</p>#}
</div>
</div>
<div class="col-span-1 justify-center my-10">
<div class="self-center bg-blue-200 py-10 px-10 my-5">
<h1 class="text-center py-10 bg-blue-50">Account</h1>
<p class="text-center">Account page body content</p>
<h1 class="text-center py-10 bg-blue-50">Account: {{ name }}</h1>
<p class="text-center">{{ userid }} content</p>
</div>
</div>
<div class="col-span-3 justify-center my-10">
<div class="self-center bg-blue-200 py-10 px-10 my-5">
<h1 class="text-center py-10 bg-blue-50">Account</h1>
<p class="text-center">Account page body content</p>
<h1 class="text-center py-10 bg-blue-50">Account: {{ name }}</h1>
<p class="text-center">{{ userid }} content</p>
</div>
</div>
</div>
Expand Down
98 changes: 34 additions & 64 deletions DirectReport/browserview/templates/login.html
Original file line number Diff line number Diff line change
@@ -1,68 +1,38 @@
{% extends "base.html" %}

{% block content %}

<div class="flex flex-col items-center justify-center px-6 py-8 mx-auto md:h-screen lg:py-0">
{# <a href="#" class="flex items-center mb-6 text-2xl font-semibold text-gray-900 dark:text-white">#}
{# <img class="w-8 h-8 mr-2" src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/logo.svg" alt="logo">#}
{# Flowbite #}
{# </a>#}
<div class="w-full bg-white rounded-lg shadow dark:border md:mt-0 sm:max-w-md xl:p-0 dark:bg-gray-800 dark:border-gray-700">
<div class="p-6 space-y-4 md:space-y-6 sm:p-8">
<h1 class="text-xl font-bold leading-tight tracking-tight text-gray-900 md:text-2xl dark:text-white">
Sign in to your account
</h1>
<form class="space-y-4 md:space-y-6" method="POST" action="/login">
<div>
<label for="email" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Your email</label>
<input type="email" name="email" id="email" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="[email protected]" required="">
</div>
<div>
<label for="password" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Password</label>
<input type="password" name="password" id="password" placeholder="••••••••" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" required="">
</div>
<div class="flex items-center justify-between">
<div class="flex items-start">
<div class="flex items-center h-5">
<input id="remember" name="remember" aria-describedby="remember" type="checkbox" class="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-primary-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-primary-600 dark:ring-offset-gray-800" required="">
</div>
<div class="ml-3 text-sm">
<label for="remember" class="text-gray-500 dark:text-gray-300">Remember me</label>
</div>
</div>
<a href="#" class="text-sm font-medium text-primary-600 hover:underline dark:text-primary-500">Forgot password?</a>
</div>
<button type="submit" class="w-full text-white bg-indigo-700 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800">Sign in</button>
<p class="text-sm font-light text-gray-500 dark:text-gray-400">
Don’t have an account yet? <a href="#" class="font-medium text-primary-600 hover:underline dark:text-primary-500">Sign up</a>
</p>
</form>
</div>
</div>
</div>
{#<div class="column is-4 is-offset-4">#}
{# <h3 class="title">Login</h3>#}
{# <div class="box">#}
{# <form method="POST" action="/login">#}
{# <div class="field">#}
{# <div class="control">#}
{# <input class="input is-large" type="email" name="email" placeholder="Your Email" autofocus="">#}
{# </div>#}
{# </div>#}
{##}
{# <div class="field">#}
{# <div class="control">#}
{# <input class="input is-large" type="password" name="password" placeholder="Your Password">#}
{# </div>#}
{# </div>#}
{# <div class="field">#}
{# <label class="checkbox">#}
{# <input type="checkbox" name="remember">#}
{# Remember me#}
{# </label>#}
{# </div>#}
{# <button class="button is-block is-info is-large is-fullwidth">Login</button>#}
{# </form>#}
{# </div>#}
{#</div>#}
<div class="flex flex-col items-center justify-center px-6 py-8 mx-auto md:h-screen lg:py-0">
<div class="w-full bg-white rounded-lg shadow dark:border md:mt-0 sm:max-w-md xl:p-0 dark:bg-gray-800 dark:border-gray-700">
<div class="p-6 space-y-4 md:space-y-6 sm:p-8">
<h1 class="text-xl font-bold leading-tight tracking-tight text-gray-900 md:text-2xl dark:text-white">
Sign in to your account
</h1>
<form class="space-y-4 md:space-y-6" method="POST" action="/login">
<div>
<label for="email" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Your email</label>
<input type="email" name="email" id="email" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="[email protected]" required="">
</div>
<div>
<label for="password" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Password</label>
<input type="password" name="password" id="password" placeholder="••••••••" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" required="">
</div>
<div class="flex items-center justify-between">
<div class="flex items-start">
<div class="flex items-center h-5">
<input id="remember" name="remember" aria-describedby="remember" type="checkbox" class="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-primary-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-primary-600 dark:ring-offset-gray-800" required="">
</div>
<div class="ml-3 text-sm">
<label for="remember" class="text-gray-500 dark:text-gray-300">Remember me</label>
</div>
</div>
<a href="#" class="text-sm font-medium text-primary-600 hover:underline dark:text-primary-500">Forgot password?</a>
</div>
<button type="submit" class="w-full text-white bg-indigo-700 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800">Sign in</button>
<p class="text-sm font-light text-gray-500 dark:text-gray-400">
Don’t have an account yet? <a href="/signup" class="font-medium text-primary-600 hover:underline dark:text-primary-500">Sign up</a>
</p>
</form>
</div>
</div>
</div>
{% endblock %}
82 changes: 57 additions & 25 deletions DirectReport/browserview/templates/signup.html
Original file line number Diff line number Diff line change
@@ -1,30 +1,62 @@
{% extends "base.html" %}

{% block content %}
<div class="column is-4 is-offset-4">
<h3 class="title">Sign Up</h3>
<div class="box">
<form method="POST" action="/signup">
<div class="field">
<div class="control">
<input class="input is-large" type="email" name="email" placeholder="Email" autofocus="">
</div>

<div class="flex flex-col items-center justify-center px-6 py-8 mx-auto md:h-screen lg:py-0">
<div class="w-full bg-white rounded-lg shadow dark:border md:mt-0 sm:max-w-md xl:p-0 dark:bg-gray-800 dark:border-gray-700">
<div class="p-6 space-y-4 md:space-y-6 sm:p-8">
<h1 class="text-xl font-bold leading-tight tracking-tight text-gray-900 md:text-2xl dark:text-white">
Sign up for an account
</h1>
<form class="space-y-4 md:space-y-6" method="POST" action="/signup">
<div>
<label for="email" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Your email</label>
<input type="email" name="email" id="email" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="[email protected]" required="">
</div>
<div>
<label for="name" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Your name</label>
<input type="text" name="name" id="name" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="John Doe.." required="">
</div>
<div>
<label for="password" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Password</label>
<input type="password" name="password" id="password" placeholder="••••••••" class="bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-lg focus:ring-primary-600 focus:border-primary-600 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" required="">
</div>
<div class="flex items-center justify-between">
<div class="flex items-start">
<div class="flex items-center h-5">
<input id="remember" name="remember" aria-describedby="remember" type="checkbox" class="w-4 h-4 border border-gray-300 rounded bg-gray-50 focus:ring-3 focus:ring-primary-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-primary-600 dark:ring-offset-gray-800" required="">
</div>
<div class="ml-3 text-sm">
<label for="remember" class="text-gray-500 dark:text-gray-300">Remember me</label>
</div>
</div>
</div>
<button type="submit" class="w-full text-white bg-indigo-700 hover:bg-primary-700 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800">Create Account</button>
</form>
</div>

<div class="field">
<div class="control">
<input class="input is-large" type="text" name="name" placeholder="Name" autofocus="">
</div>
</div>

<div class="field">
<div class="control">
<input class="input is-large" type="password" name="password" placeholder="Password">
</div>
</div>

<button class="button is-block is-info is-large is-fullwidth">Sign Up</button>
</form>
</div>
</div>
</div>
{#<div class="column is-4 is-offset-4">#}
{# <h3 class="title">Sign Up</h3>#}
{# <div class="box">#}
{# <form method="POST" action="/signup">#}
{# <div class="field">#}
{# <div class="control">#}
{# <input class="input is-large" type="email" name="email" placeholder="Email" autofocus="">#}
{# </div>#}
{# </div>#}
{# <div class="field">#}
{# <div class="control">#}
{# <input class="input is-large" type="text" name="name" placeholder="Name" autofocus="">#}
{# </div>#}
{# </div>#}
{##}
{# <div class="field">#}
{# <div class="control">#}
{# <input class="input is-large" type="password" name="password" placeholder="Password">#}
{# </div>#}
{# </div>#}
{# <button class="button is-block is-info is-large is-fullwidth">Sign Up</button>#}
{# </form>#}
{# </div>#}
{#</div>#}
{% endblock %}
38 changes: 19 additions & 19 deletions DirectReport/models/user_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,67 +3,67 @@
from flask_login import UserMixin

class User(UserMixin):
def __init__(self, id, user_name, email, password):
self.id = email
self.user_name = user_name
self.email = email
self.password = password
self.authenticated = True
def __init__(self, id, username, email, password):
self.id = email
self.uid = id
self.username = username
self.email = email
self.password = password
self.authenticated = True

def is_active(self):
return True
return True

def is_anonymous(self):
return False
return False

def is_authenticated(self):
return self.authenticated
return self.authenticated

def is_active(self):
return True
return True

def get_id(self):
return self.id
return self.id

class UserModel:
def __init__(self, db_name="users.db"):
self.conn = sqlite3.connect(db_name, check_same_thread=False)
self.create_table()

def create_table(self):
c = self.conn.cursor()
c.execute("""
cursor = self.conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id TEXT NOT NULL,
user_name TEXT NOT NULL,
username TEXT NOT NULL,
email TEXT UNIQUE NOT NULL PRIMARY KEY,
password TEXT NOT NULL
)
""")
self.conn.commit()

def insert_user(self, user_name, email, password):
def insert_user(self, username, email, password):
cursor = self.conn.cursor()
uuid_str = str(uuid.uuid4())
try:
cursor.execute("INSERT INTO users (id, user_name, email, password) VALUES (?, ?, ?, ?)", (uuid_str, user_name, email, password))
cursor.execute("INSERT INTO users (id, username, email, password) VALUES (?, ?, ?, ?)", (uuid_str, username, email, password))
self.conn.commit()
print("User added successfully!")
except sqlite3.IntegrityError:
print("Error: Email already exists.")

def get_user_by_email(self, email):
cursor = self.conn.cursor()
cursor.execute("SELECT id, user_name, email, password FROM users WHERE email=?", (email,))
cursor.execute("SELECT id, username, email, password FROM users WHERE email=?", (email,))
result = cursor.fetchone()
print(result)
if result:
return User(result[0], result[1], result[2], result[3])
return None

def get_all_users(self):
cursor = self.conn.cursor()
cursor.execute("SELECT id, user_name, email FROM users")
cursor.execute("SELECT id, username, email FROM users")
return cursor.fetchall()

def close(self):
Expand Down

0 comments on commit 48929fa

Please sign in to comment.