@startuml

class User {
    -uuid
    -username
    -password
}

class Authorization 

class UserAuthorization {
    -readPermission
    -writePermission
    -executionPermission
}

class GroupAuthorization {
    -readPermission
    -writePermission
    -executionPermission
}

class Group

class Role

class UserAttribute {
    -name
    -value
}

class Resource {
    -type
}

class UserRole

User "1" *- "n" UserAuthorization
UserAuthorization "n" --* "1" Authorization
UserAuthorization "0..n" *-- "m" Resource
User "1" *- "n" UserRole
UserRole "n" --* "1" Role
UserRole "0..n" *-- "m" Resource
Group "1" -* "n" GroupAuthorization
GroupAuthorization "n" -* "1" Authorization
Role "1" *-- "n" Group
UserAttribute "n" -- "1" User
Resource "1" o-- "n" Resource : sub-resource

@enduml