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
+44 -10
View File
@@ -3,7 +3,6 @@ package entities
import (
"database/sql/driver"
"encoding/json"
"errors"
"time"
"github.com/google/uuid"
@@ -13,15 +12,19 @@ import (
type UserRole string
const (
RoleAdmin UserRole = "admin"
RoleManager UserRole = "manager"
RoleCashier UserRole = "cashier"
RoleWaiter UserRole = "waiter"
RoleSuperAdmin UserRole = "superadmin"
RoleAdmin UserRole = "admin"
RoleManager UserRole = "manager"
RoleCashier UserRole = "cashier"
RoleWaiter UserRole = "waiter"
)
type Permissions map[string]interface{}
func (p Permissions) Value() (driver.Value, error) {
if p == nil {
return "{}", nil
}
return json.Marshal(p)
}
@@ -31,12 +34,33 @@ func (p *Permissions) Scan(value interface{}) error {
return nil
}
bytes, ok := value.([]byte)
if !ok {
return errors.New("type assertion to []byte failed")
switch v := value.(type) {
case []byte:
if len(v) == 0 || string(v) == "{}" {
*p = make(Permissions)
return nil
}
// Try to unmarshal, if it fails, return empty permissions
if err := json.Unmarshal(v, p); err != nil {
*p = make(Permissions)
return nil
}
return nil
case string:
if v == "" || v == "{}" {
*p = make(Permissions)
return nil
}
// Try to unmarshal, if it fails, return empty permissions
if err := json.Unmarshal([]byte(v), p); err != nil {
*p = make(Permissions)
return nil
}
return nil
default:
*p = make(Permissions)
return nil
}
return json.Unmarshal(bytes, p)
}
type User struct {
@@ -60,6 +84,16 @@ func (u *User) BeforeCreate(tx *gorm.DB) error {
if u.ID == uuid.Nil {
u.ID = uuid.New()
}
if u.Permissions == nil {
u.Permissions = make(Permissions)
}
return nil
}
func (u *User) BeforeUpdate(tx *gorm.DB) error {
if u.Permissions == nil {
u.Permissions = make(Permissions)
}
return nil
}