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") var password string = r.FormValue("password")
fmt.Fprintf(w, "Login : User : %s, Password : %s\n\n", username, 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) database.DecodeDatabaseResult(&result)
fmt.Println(result) fmt.Println(result)

View File

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