add user login

This commit is contained in:
Aditya Siregar
2025-08-03 23:11:31 +07:00
parent ebe9999793
commit f65c06a053
14 changed files with 94 additions and 31 deletions
+32 -2
View File
@@ -1,6 +1,7 @@
package repository
import (
"apskel-pos-be/internal/logger"
"context"
"apskel-pos-be/internal/entities"
@@ -25,19 +26,48 @@ func (r *UserRepositoryImpl) Create(ctx context.Context, user *entities.User) er
func (r *UserRepositoryImpl) GetByID(ctx context.Context, id uuid.UUID) (*entities.User, error) {
var user entities.User
err := r.db.WithContext(ctx).First(&user, "id = ?", id).Error
// Use raw SQL to avoid GORM scanning issues with JSONB
query := `
SELECT id, organization_id, outlet_id, name, email, password_hash, role,
COALESCE(permissions, '{}'::jsonb) as permissions, is_active, created_at, updated_at
FROM users
WHERE id = ?
`
err := r.db.WithContext(ctx).Raw(query, id).Scan(&user).Error
if err != nil {
return nil, err
}
// Ensure permissions is properly initialized
if user.Permissions == nil {
user.Permissions = make(entities.Permissions)
}
return &user, nil
}
func (r *UserRepositoryImpl) GetByEmail(ctx context.Context, email string) (*entities.User, error) {
var user entities.User
err := r.db.WithContext(ctx).Where("email = ?", email).First(&user).Error
query := `
SELECT id, organization_id, outlet_id, name, email, password_hash, role,
COALESCE(permissions, '{}'::jsonb) as permissions, is_active, created_at, updated_at
FROM users
WHERE email = ?
`
err := r.db.WithContext(ctx).Raw(query, email).Scan(&user).Error
if err != nil {
logger.FromContext(ctx).WithError(err).Error("UserRepositoryImpl::GetByEmail -> failed to get user by email")
return nil, err
}
if user.Permissions == nil {
user.Permissions = make(entities.Permissions)
}
return &user, nil
}