Merge remote-tracking branch 'origin/master'

This commit is contained in:
M_Kececi
2026-02-18 15:44:51 +03:00
parent 13f8801379
commit d2bd0684c1
2 changed files with 116 additions and 19 deletions

View File

@@ -30,6 +30,76 @@ type LoginRequest struct {
Password string `json:"password"`
}
func ensureLegacyUserReadyForSession(db *sql.DB, legacyUser *models.User) (int64, error) {
desiredID := int64(legacyUser.ID)
_, err := db.Exec(`
INSERT INTO mk_dfusr (
id,
code,
username,
email,
full_name,
mobile,
address,
is_active,
password_hash,
force_password_change,
created_at,
updated_at,
last_updated_date
)
VALUES (
$1,$2,$3,$4,$5,$6,$7,$8,'',true,NOW(),NOW(),NOW()
)
ON CONFLICT (id)
DO UPDATE SET
code = EXCLUDED.code,
username = EXCLUDED.username,
email = EXCLUDED.email,
full_name = COALESCE(NULLIF(EXCLUDED.full_name, ''), mk_dfusr.full_name),
mobile = COALESCE(NULLIF(EXCLUDED.mobile, ''), mk_dfusr.mobile),
address = COALESCE(NULLIF(EXCLUDED.address, ''), mk_dfusr.address),
is_active = EXCLUDED.is_active,
force_password_change = true,
updated_at = NOW(),
last_updated_date = NOW()
`,
desiredID,
strings.TrimSpace(legacyUser.Username),
strings.TrimSpace(legacyUser.Username),
strings.TrimSpace(legacyUser.Email),
strings.TrimSpace(legacyUser.FullName),
strings.TrimSpace(legacyUser.Mobile),
strings.TrimSpace(legacyUser.Address),
legacyUser.IsActive,
)
if err == nil {
return desiredID, nil
}
mkRepo := repository.NewMkUserRepository(db)
existing, lookupErr := mkRepo.GetByUsername(legacyUser.Username)
if lookupErr != nil {
return 0, err
}
_, updErr := db.Exec(`
UPDATE mk_dfusr
SET
is_active = $1,
force_password_change = true,
updated_at = NOW(),
last_updated_date = NOW()
WHERE id = $2
`, legacyUser.IsActive, existing.ID)
if updErr != nil {
return 0, updErr
}
return existing.ID, nil
}
func LoginHandler(db *sql.DB) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
@@ -137,8 +207,15 @@ func LoginHandler(db *sql.DB) http.HandlerFunc {
// 3⃣ LEGACY SESSION (PENDING MIGRATION)
// - mk_dfusr migration is completed in /api/password/change
// ==================================================
mkID, err := ensureLegacyUserReadyForSession(db, legacyUser)
if err != nil {
log.Printf("LEGACY LOGIN MIGRATION BIND FAILED username=%s err=%v", login, err)
http.Error(w, "Giriş yapılamadı", http.StatusInternalServerError)
return
}
mkUser = &models.MkUser{
ID: int64(legacyUser.ID),
ID: mkID,
Username: legacyUser.Username,
Email: legacyUser.Email,
IsActive: legacyUser.IsActive,
@@ -150,7 +227,7 @@ func LoginHandler(db *sql.DB) http.HandlerFunc {
auditlog.Write(auditlog.ActivityLog{
ActionType: "LEGACY_USER_LOGIN_PENDING_MIGRATION",
ActionCategory: "security",
Description: "legacy login ok, first password change required",
Description: "legacy giriş başarılı, ilk şifre değişikliği gerekli",
IsSuccess: true,
})