43 lines
829 B
Go
43 lines
829 B
Go
package services
|
||
|
||
import (
|
||
"bssapp-backend/models"
|
||
"strings"
|
||
|
||
"golang.org/x/crypto/bcrypt"
|
||
)
|
||
|
||
// CheckPasswordWithLegacy
|
||
// - SADECE doğrulama yapar
|
||
// - DB write YAPMAZ
|
||
// - Migration kararını caller verir
|
||
func CheckPasswordWithLegacy(user *models.User, plain string) bool {
|
||
if user == nil {
|
||
return false
|
||
}
|
||
|
||
plain = strings.TrimSpace(plain)
|
||
if plain == "" {
|
||
return false
|
||
}
|
||
|
||
stored := strings.TrimSpace(user.Upass)
|
||
if stored == "" {
|
||
return false
|
||
}
|
||
|
||
// 1️⃣ bcrypt hash mi?
|
||
if isBcryptHash(stored) {
|
||
return bcrypt.CompareHashAndPassword([]byte(stored), []byte(plain)) == nil
|
||
}
|
||
|
||
// 2️⃣ TAM LEGACY — düz metin (eski kayıtlar)
|
||
return stored == plain
|
||
}
|
||
|
||
func isBcryptHash(s string) bool {
|
||
return strings.HasPrefix(s, "$2a$") ||
|
||
strings.HasPrefix(s, "$2b$") ||
|
||
strings.HasPrefix(s, "$2y$")
|
||
}
|