Add user login token

dev
Nogard 2025-05-11 23:46:42 +02:00
parent 435a12a6bb
commit 76070ac882
2 changed files with 80 additions and 68 deletions

View File

@ -78,7 +78,7 @@ func apiAuthLogin(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
var password string = r.FormValue("password")
fmt.Fprintf(w, "Login : User : %s, Password : %s\n\n", username, password)
var result database.DatabaseResult = database.ExecuteStoredRoutine("CheckUser", username, password)
var result database.DatabaseResult = database.ExecuteStoredRoutine("AuthUser", username, password)
database.DecodeDatabaseResult(&result)
fmt.Println(result)

View File

@ -126,37 +126,31 @@ var databaseStructure databaseDefinition = databaseDefinition{
{
Name: "id",
Type: "int(11)",
IsNullable: false,
AutoIncrement: true,
Primary: true,
},
{
Name: "name",
Type: "varchar(256)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
Name: "name",
Type: "varchar(256)",
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
},
{
Name: "password",
Type: "varchar(256)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_bin",
Name: "password",
Type: "varchar(256)",
Charset: "utf8mb4",
Collation: "utf8mb4_bin",
},
{
Name: "password_salt",
Type: "varchar(256)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_bin",
Name: "password_salt",
Type: "varchar(256)",
Charset: "utf8mb4",
Collation: "utf8mb4_bin",
},
{
Name: "permission_level",
Type: "enum('ADMIN', 'MODERATOR', 'USER')",
Default: "'USER'",
IsNullable: false,
Charset: nil,
Name: "permission_level",
Type: "enum('ADMIN', 'MODERATOR', 'USER')",
Default: "'USER'",
},
{
Name: "email",
@ -174,16 +168,14 @@ var databaseStructure databaseDefinition = databaseDefinition{
{
Name: "id",
Type: "int(11)",
IsNullable: false,
AutoIncrement: true,
Primary: true,
},
{
Name: "name",
Type: "varchar(64)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
Name: "name",
Type: "varchar(64)",
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
},
},
},
@ -193,16 +185,14 @@ var databaseStructure databaseDefinition = databaseDefinition{
{
Name: "id",
Type: "int(11)",
IsNullable: false,
AutoIncrement: true,
Primary: true,
},
{
Name: "name",
Type: "varchar(64)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
Name: "name",
Type: "varchar(64)",
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
},
},
},
@ -212,16 +202,14 @@ var databaseStructure databaseDefinition = databaseDefinition{
{
Name: "id",
Type: "int(11)",
IsNullable: false,
AutoIncrement: true,
Primary: true,
},
{
Name: "name",
Type: "varchar(256)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
Name: "name",
Type: "varchar(256)",
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
},
{
Name: "content",
@ -240,22 +228,33 @@ var databaseStructure databaseDefinition = databaseDefinition{
Collation: "utf8mb4_bin",
},
{
Name: "folder_id",
Type: "int(11)",
IsNullable: false,
Name: "folder_id",
Type: "int(11)",
},
{
Name: "date",
Type: "datetime",
IsNullable: false,
Default: "current_timestamp()",
Name: "date",
Type: "datetime",
Default: "current_timestamp()",
},
{
Name: "title",
Type: "varchar(256)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
Name: "title",
Type: "varchar(256)",
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
},
},
},
{
Name: "loginToken",
Columns: []columsDefinition{
{
Name: "id",
Type: "VARCHAR(256)",
Primary: true,
},
{
Name: "user_id",
Type: "int(11)",
},
},
},
@ -263,23 +262,20 @@ var databaseStructure databaseDefinition = databaseDefinition{
Name: "tags_websites",
Columns: []columsDefinition{
{
Name: "tag_id",
Type: "int(11)",
IsNullable: false,
Primary: true,
Name: "tag_id",
Type: "int(11)",
Primary: true,
},
{
Name: "website_id",
Type: "int(11)",
IsNullable: false,
Primary: true,
Name: "website_id",
Type: "int(11)",
Primary: true,
},
{
Name: "value",
Type: "varchar(64)",
IsNullable: false,
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
Name: "value",
Type: "varchar(64)",
Charset: "utf8mb4",
Collation: "utf8mb4_unicode_ci",
},
},
},
@ -369,6 +365,15 @@ var databaseStructure databaseDefinition = databaseDefinition{
UpdateRule: "CASCADE",
DeleteRule: "CASCADE",
},
{
Name: "FK_loginToken__user_id",
Table: "loginToken",
ColumnName: "user_id",
PointingToTable: "user",
PointingToColumn: "id",
UpdateRule: "CASCADE",
DeleteRule: "CASCADE",
},
},
StoredProcedures: []storedProcedureDefinition{
{
@ -411,7 +416,7 @@ SELECT LAST_INSERT_ID() INTO f_user_id;
RETURN f_user_id;`,
},
{
Name: "CheckUser",
Name: "AuthUser",
Parameters: []storedRoutineParameterDefinition{
{
Name: "f_user_name",
@ -427,13 +432,14 @@ RETURN f_user_id;`,
},
},
Return: storedRoutineParameterDefinition{
Type: "INT(11)",
Type: "VARCHAR(256)",
},
Command: `
DECLARE f_user_id INT(11) DEFAULT NULL;
DECLARE f_salt VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
DECLARE f_password VARCHAR(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
DECLARE f_user VARCHAR(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
DECLARE f_token VARCHAR(256) DEFAULT "";
SET f_user = LOWER(f_user_name);
@ -442,7 +448,13 @@ SELECT SHA2(CONCAT(f_user, f_user_password, f_salt), 512) INTO f_password;
SELECT id INTO f_user_id FROM user WHERE name = f_user AND password = f_password LIMIT 1;
RETURN f_user_id;`,
IF f_user_id IS NOT NULL THEN
SELECT SHA2(UUID(), 512) INTO f_token;
INSERT INTO loginToken(id, user_id) VALUES(f_token, f_user_id);
RETURN f_token;
ELSE
RETURN "";
END IF;`,
},
},
}