/
user.go
33 lines (28 loc) · 1.08 KB
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package entity
import "github.com/n-creativesystem/rbns/domain/model"
type User struct {
Key string `gorm:"type:varchar(256);primaryKey"`
OrganizationID string `gorm:"type:varchar(256);primaryKey"`
Organization Organization `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
UserRoles []UserRole `gorm:"foreignKey:UserKey,OrganizationID;references:Key,OrganizationID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
}
func (u User) ConvertModel() (*model.User, error) {
var permissions []model.Permission
var roles []model.Role
for _, role := range u.UserRoles {
if r, err := role.Role.ConvertModel(); err != nil {
return nil, err
} else {
roles = append(roles, *r)
permissions = append(permissions, r.GetPermissions().Copy()...)
}
}
return model.NewUser(u.Key, roles, permissions)
}
type UserRole struct {
UserKey string `gorm:"type:varchar(256);primaryKey"`
OrganizationID string `gorm:"type:varchar(256);primaryKey"`
RoleID string `gorm:"type:varchar(256);primaryKey"`
Organization Organization
Role Role
}