add user login
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user