v0.1.0 completed. only the owner can create new articles, users can modify their password, username, email, or delete their account, there's auth and permissions preventing accessing other user's information, and more. onto the road to v0.2.0
This commit is contained in:
@@ -97,7 +97,7 @@ function cookies($user, $time)
|
||||
|
||||
function logout()
|
||||
{
|
||||
foreach ($_COOKIE as $key => $value) {
|
||||
foreach (array_keys($_COOKIE) as $key) {
|
||||
echo 'unsetting ' . $key . ' now.';
|
||||
setcookie($key, '', time() - 3600, '/');
|
||||
unset($_COOKIE[$key]);
|
||||
@@ -110,7 +110,7 @@ function login_form($error_msg = '')
|
||||
{
|
||||
$form = '
|
||||
<div class="form_card">
|
||||
<h3>Log In</h3>
|
||||
<h3 class="underline">Log In</h3>
|
||||
<form method="post">
|
||||
<label for="username">Username / Email</label>
|
||||
<input id="username" name="username" required>
|
||||
@@ -123,7 +123,6 @@ function login_form($error_msg = '')
|
||||
<span class="checkmark"></span>
|
||||
</label>
|
||||
|
||||
<a href="user.php?action=signup">Sign Up</a>
|
||||
<input class="button" type="submit" value="Log In">
|
||||
' . $error_msg . '
|
||||
</form>
|
||||
@@ -137,7 +136,7 @@ function signup_form($error_msg = '')
|
||||
{
|
||||
$form = '
|
||||
<div class="form_card">
|
||||
<h3>Sign Up</h3>
|
||||
<h3 class="underline">Sign Up</h3>
|
||||
<form method="post">
|
||||
<label for="username">Username</label>
|
||||
<input id="username" name="username" required>
|
||||
@@ -159,7 +158,6 @@ function signup_form($error_msg = '')
|
||||
<span class="checkmark"></span>
|
||||
</label>
|
||||
|
||||
<a href="user.php?action=login">Log In</a>
|
||||
<input class="button" type="submit" value="Sign Up">
|
||||
' . $error_msg . '
|
||||
</form>
|
||||
@@ -168,3 +166,291 @@ function signup_form($error_msg = '')
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
function reset_pw_form()
|
||||
{
|
||||
$form = '
|
||||
<div class="form_card">
|
||||
<h5 class="underline">Reset Password</h5>
|
||||
<span class="modal_close">×</span>
|
||||
<form method="post">
|
||||
<input type="hidden" name="form_id" value="reset_pw_form">
|
||||
|
||||
<label for="new_pw">New Password</label>
|
||||
<input id="new_pw" name="new_pw" type="password" required>
|
||||
|
||||
<label for="verify_new_pw">Verify New Password</label>
|
||||
<input id="verify_new_pw" name="verify_new_pw" type="password" required>
|
||||
|
||||
<input type="submit" class="button" value="Reset Password">
|
||||
</form>
|
||||
</div>
|
||||
';
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
function reset_password($user_id, $new_password, $verify_new_password)
|
||||
{
|
||||
if ($new_password != $verify_new_password) {
|
||||
$error_msg = '
|
||||
<div class="error">
|
||||
Passwords do not match!
|
||||
</div>
|
||||
';
|
||||
|
||||
return $error_msg;
|
||||
}
|
||||
|
||||
$password_hash = hash('sha256', $new_password);
|
||||
$stmt = 'UPDATE user SET password_hash = "' . $password_hash . '" WHERE user_id = ' . $user_id . ';';
|
||||
exec_statement($stmt, 0);
|
||||
}
|
||||
|
||||
function update_email_form()
|
||||
{
|
||||
$form = '
|
||||
<div class="form_card">
|
||||
<h5 class="underline">Update Email</h5>
|
||||
<span class="modal_close">×</span>
|
||||
<form method="post">
|
||||
<input type="hidden" name="form_id" value="update_email_form">
|
||||
|
||||
<label for="new_email">New Email</label>
|
||||
<input id="new_email" name="new_email" required>
|
||||
|
||||
<label for="verify_new_email">Verify New Email</label>
|
||||
<input id="verify_new_email" name="verify_new_email" required>
|
||||
|
||||
<input type="submit" class="button" value="Update Email">
|
||||
</form>
|
||||
</div>
|
||||
';
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
function update_email($user_id, $new_email, $verify_new_email)
|
||||
{
|
||||
if ($new_email != $verify_new_email) {
|
||||
$error_msg = '
|
||||
<div class="error">
|
||||
Emails do not match!
|
||||
</div>
|
||||
';
|
||||
|
||||
return $error_msg;
|
||||
}
|
||||
|
||||
$stmt = 'UPDATE user SET email = "' . $new_email . '" WHERE user_id = ' . $user_id . ';';
|
||||
exec_statement($stmt, 0);
|
||||
}
|
||||
|
||||
function update_username_form()
|
||||
{
|
||||
$form = '
|
||||
<div class="form_card">
|
||||
<h5 class="underline">Update Username</h5>
|
||||
<span class="modal_close">×</span>
|
||||
<form method="post">
|
||||
<input type="hidden" name="form_id" value="update_username_form">
|
||||
|
||||
<label for="new_username">New Username</label>
|
||||
<input id="new_username" name="new_username" required>
|
||||
|
||||
<label for="verify_new_username">Verify New Username</label>
|
||||
<input id="verify_new_username" name="verify_new_username" required>
|
||||
|
||||
<input type="submit" class="button" value="Update Username">
|
||||
</form>
|
||||
</div>
|
||||
';
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
function update_username($user_id, $new_username, $verify_new_username)
|
||||
{
|
||||
if ($new_username != $verify_new_username) {
|
||||
$error_msg = '
|
||||
<div class="error">
|
||||
Usernames do not match!
|
||||
</div>
|
||||
';
|
||||
|
||||
return $error_msg;
|
||||
}
|
||||
|
||||
$query = 'SELECT username FROM user WHERE username = "' . $new_username . '";';
|
||||
if (query_one_result($query) != null) {
|
||||
$error_msg = '
|
||||
<div class="error">
|
||||
Usernames is taken!
|
||||
</div>
|
||||
';
|
||||
|
||||
return $error_msg;
|
||||
}
|
||||
|
||||
$stmt = 'UPDATE user SET username = "' . $new_username . '" WHERE user_id = ' . $user_id . ';';
|
||||
exec_statement($stmt, 0);
|
||||
}
|
||||
|
||||
function request_role_change_form()
|
||||
{
|
||||
$query = 'SELECT * FROM roles WHERE role_id <> 1;';
|
||||
$results = query_one_or_more_results($query);
|
||||
|
||||
$roles = '<div class="checkboxes">';
|
||||
while ($row = mysqli_fetch_array($results)) {
|
||||
$roles .= '
|
||||
<label class="form_checkbox_container">' . $row['role'] . '
|
||||
<input name="requested_role" value="' . $row['role_id'] . '" type="checkbox"' . ($row['role_id'] == $_COOKIE['role_id'] ? ' checked' : '') . '>
|
||||
<span class="checkmark"></span>
|
||||
</label>
|
||||
';
|
||||
}
|
||||
|
||||
$roles .= '</div>';
|
||||
|
||||
$form = '
|
||||
<div class="form_card">
|
||||
<h5 class="underline">Request Role</h5>
|
||||
<span class="modal_close">×</span>
|
||||
<form method="post">
|
||||
<input type="hidden" name="form_id" value="request_role_form">
|
||||
' . $roles . '
|
||||
|
||||
<input type="submit" class="button" value="Request Role">
|
||||
</form>
|
||||
</div>
|
||||
';
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
function request_role_change($user_id, $new_role_id)
|
||||
{
|
||||
// TODO: Need to implement email handler first.
|
||||
}
|
||||
|
||||
function delete_account_form()
|
||||
{
|
||||
$form = '
|
||||
<div class="form_card">
|
||||
<h5 class="underline">Delete Account</h5>
|
||||
<span class="modal_close">×</span>
|
||||
<form method="post">
|
||||
<input type="hidden" name="form_id" value="delete_account_form">
|
||||
|
||||
<label for="delete_password">Password</label>
|
||||
<input id="delete_password" name="delete_password" type="password" required>
|
||||
|
||||
<label for="delete_verify_password">Verify Password</label>
|
||||
<input id="delete_verify_password" name="delete_verify_password" type="password" required>
|
||||
|
||||
<input type="submit" class="button" value="Delete Account">
|
||||
</form>
|
||||
</div>
|
||||
';
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
function delete_account($user_id, $password, $verify_password)
|
||||
{
|
||||
if ($user_id == 2025) {
|
||||
$error_msg = '
|
||||
<div class="error">
|
||||
I am the owner, and I cannot delete myself...
|
||||
</div>
|
||||
';
|
||||
|
||||
return $error_msg;
|
||||
}
|
||||
|
||||
if ($password != $verify_password) {
|
||||
$error_msg = '
|
||||
<div class="error">
|
||||
Passwords do not match!
|
||||
</div>
|
||||
';
|
||||
|
||||
return $error_msg;
|
||||
}
|
||||
|
||||
$password_hash = hash('sha256', $password);
|
||||
$query = 'SELECT user_id FROM user WHERE user_id = ' . $user_id . ' AND password_hash = "' . $password_hash . '";';
|
||||
$user = query_one_result($query);
|
||||
|
||||
if ($user == null) {
|
||||
$error_msg = '
|
||||
<div class="error">
|
||||
Username and/or Password are invalid!
|
||||
</div>
|
||||
';
|
||||
|
||||
return $error_msg;
|
||||
}
|
||||
|
||||
$stmt = 'DELETE FROM user WHERE user_id = ' . $user_id . ';';
|
||||
exec_statement($stmt, 1);
|
||||
logout();
|
||||
}
|
||||
|
||||
function user_view($user_id)
|
||||
{
|
||||
if (!isset($_COOKIE['role_id']) || ($_COOKIE['role_id'] > 2 && $_COOKIE['user_id'] != $user_id))
|
||||
header('Location: articles.php');
|
||||
|
||||
$query = 'SELECT user_id, username, email, role_id, created_at, last_active, is_active, profile_picture FROM user WHERE user_id = ' . $user_id . ';';
|
||||
$user = query_one_result($query);
|
||||
if ($user == null)
|
||||
header('Location: articles.php');
|
||||
|
||||
$view = '
|
||||
<div class="user_view">
|
||||
<div class="row">
|
||||
<h1>' . $user['username'] . '</h1>
|
||||
<div class="card_pic_box">
|
||||
<img src="/profile_pictures/' . $user['profile_picture'] . '" class="profile_picture" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<h3>User Actions</h3>
|
||||
';
|
||||
|
||||
// TODO: Need to setup an email handler.
|
||||
// <a class="modal_button underline">Request Role</a>
|
||||
// <div id="request_role_form" class="modal_form">' . request_role_change_form() . '</div>
|
||||
$view .= '
|
||||
<div class="user_actions">
|
||||
<a class="modal_button underline">Reset Password</a>
|
||||
<a class="modal_button underline">Update Email</a>
|
||||
<a class="modal_button underline">Update Username</a>
|
||||
<a class="modal_button underline">Delete Account</a>
|
||||
</div>
|
||||
|
||||
<div id="user_actions_modal" class="modal">
|
||||
<div class="modal_content">
|
||||
<div id="modal_content"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="display: none;">
|
||||
<div id="reset_pw_form" class="modal_form">' . reset_pw_form() . '</div>
|
||||
<div id="update_email_form" class="modal_form">' . update_email_form() . '</div>
|
||||
<div id="update_username_form" class="modal_form">' . update_username_form() . '</div>
|
||||
<div id="delete_account_form" class="modal_form">' . delete_account_form() . '</div>
|
||||
</div>
|
||||
</div>
|
||||
';
|
||||
|
||||
return $view;
|
||||
}
|
||||
|
||||
function admin_user_view($user_id)
|
||||
{
|
||||
$query = 'SELECT user_id, username, email, role_id, created_at, last_active, is_active, profile_picture FROM user WHERE user_id = ' . $user_id . ';';
|
||||
$user = query_one_result($query);
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ function article_card($article_id)
|
||||
$tags_html .= '</div>';
|
||||
}
|
||||
|
||||
$author_query = 'SELECT username, profile_picture FROM user WHERE user_id = ' . $article['author_id'] . ';';
|
||||
$author_query = 'SELECT user_id, username, profile_picture FROM user WHERE user_id = ' . $article['author_id'] . ';';
|
||||
$author = query_one_result($author_query);
|
||||
|
||||
$card = '
|
||||
@@ -87,7 +87,7 @@ function article_card($article_id)
|
||||
<h4>' . $article['title'] . '</h4>
|
||||
<div class="card_info_box">
|
||||
<div class="col-right">
|
||||
<small>Written by: ' . $author['username'] . '</small>
|
||||
<a href="user.php?action=view&user_id=' . $author['user_id'] . '">Written by: ' . $author['username'] . '</a>
|
||||
<small>Published: ' . $article['published_at'] . '</small>
|
||||
</div>
|
||||
<div class="card_pic_box">
|
||||
|
||||
Reference in New Issue
Block a user