Compare commits

..

No commits in common. "07977292fe5c80a677d4fcca98c389ed5b252f99" and "e12849508e61a370d4258a0069fb70728a2a0e04" have entirely different histories.

7 changed files with 39 additions and 85 deletions

View File

@ -1,6 +0,0 @@
{
"recommendations": [
"kraih.mojolicious",
"aaron-bond.better-comments"
]
}

49
.vscode/settings.json vendored
View File

@ -16,54 +16,5 @@
"subf",
"subforum",
"subforums"
],
"better-comments.highlightPlainText": true,
"better-comments.tags": [
{
"tag": "!",
"color": "#FF2D00",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "?",
"color": "#3498DB",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "//",
"color": "#474747",
"strikethrough": true,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "todo",
"color": "#FF8C00",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "*",
"color": "#98C379",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
}
]
}

View File

@ -1,5 +1,5 @@
--
-- File generated with SQLiteStudio v3.4.4 on Sun. May 7 22:15:23 2023
-- File generated with SQLiteStudio v3.4.4 on Sun. May 7 00:02:05 2023
--
-- Text encoding used: UTF-8
--
@ -48,6 +48,7 @@ DROP TABLE IF EXISTS sessions;
CREATE TABLE IF NOT EXISTS sessions (
user_id INTEGER PRIMARY KEY
REFERENCES users (user_id)
UNIQUE
NOT NULL,
session_key TEXT NOT NULL
UNIQUE,

View File

@ -1,4 +1,5 @@
package CharmBoard;
use experimental 'smartmatch';
use Mojo::Base 'Mojolicious', -signatures;
use CharmBoard::Schema;

View File

@ -76,42 +76,48 @@ sub login_do ($app) {
my $username = $app->param('username');
my $password = $app->pepper . ':' . $app->param('password');
try {
# check to see if user by entered username exists
my $userInfo = $app->schema->resultset('Users')->search({username => $username});
$userInfo or die;
my $userInfoCheck = $app->schema->resultset('Users')->search({username => $username});
# now check password validity
my $passCheck = passchk($userInfo->get_column('salt')->first,
$userInfo->get_column('password')->first, $password);
$passCheck or die;
if ($userInfoCheck) {
my $passCheckStatus = passchk($userInfoCheck->get_column('salt')->first,
$userInfoCheck->get_column('password')->first, $password);
# get user ID for session creation
my $userID = $userInfo->get_column('user_id')->first;
if ($passCheckStatus) {
my $userID = $userInfoCheck->get_column('user_id')->first;
# gen session key and set expiry time
my $sessionKey = seasoning(16);
my $sessionExpiry = time + 604800;
# delete old session from DB if exists
if ($app->schema->resultset('Session')->search({user_id => $userID})) {
$app->schema->resultset('Session')->search({user_id => $userID})->delete; };
# add session to database
$app->schema->resultset('Session')->create({
# gen session key and set expiry time
my $sessionKey = seasoning(16);
my $sessionExpiry = time + 604800;
# add session to database
$app->schema->resultset('Session')->create({
user_id => $userID,
session_key => $sessionKey,
session_expiry => $sessionExpiry,
is_ip_bound => 0,
bound_ip => undef });
# now create session cookie for user
$app->session(is_auth => 1);
$app->session(user_id => $userID);
$app->session(session_key => $sessionKey);
$app->session(expires => $sessionExpiry);
# now create session cookie for user
$app->session(is_auth => 1);
$app->session(user_id => $userID);
$app->session(session_key => $sessionKey);
$app->session(expires => $sessionExpiry);
# redirect to index upon success
$app->redirect_to('/')}
catch ($error) { # redir to login page on fail
print $error;
$app->flash(error => 'Username or password incorrect.');
$app->redirect_to('login')}};
# redirect to index
$app->redirect_to('/')}
else {
$app->flash(error => 'Password incorrect');
$app->redirect_to('login')}}
else {
$app->flash(error => 'User ' . $username . ' does not exist.');
$app->redirect_to('login')};
}
1;

View File

@ -13,7 +13,7 @@ __PACKAGE__->add_columns(
is_nullable => 0, },
thread_id => {
data_type => 'integer',
is_auto_increment => 0,
is_auto_increment => 1,
is_nullable => 0, },
post_date => {
data_type => 'integer',

View File

@ -3,6 +3,7 @@
use strict;
use warnings;
use utf8;
use experimental 'smartmatch';
use Mojo::File qw(curfile);
use lib curfile->dirname->sibling('lib')->to_string;