Updated role checks
This commit is contained in:
parent
dcd28a1993
commit
d869738c21
|
@ -47,50 +47,48 @@ module MW
|
|||
true
|
||||
end
|
||||
|
||||
def role?(*roles : Schema::UserRole) : Bool
|
||||
def role?(*roles : Schema::UserRole, external = true) : Bool
|
||||
return false unless authenticated?
|
||||
|
||||
roles.each do |role|
|
||||
return true if @role == role == case @external
|
||||
when Db::Admin
|
||||
Schema::UserRole::Admin
|
||||
when Db::Teacher
|
||||
Schema::UserRole::Teacher
|
||||
when Db::Student
|
||||
Schema::UserRole::Student
|
||||
return true if @role == role && if external
|
||||
role == case @external
|
||||
when Db::Admin
|
||||
Schema::UserRole::Admin
|
||||
when Db::Teacher
|
||||
Schema::UserRole::Teacher
|
||||
when Db::Student
|
||||
Schema::UserRole::Student
|
||||
end
|
||||
else
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
false
|
||||
end
|
||||
|
||||
def role!(role : Schema::UserRole) : Bool
|
||||
raise "Invalid permissions" unless role? role
|
||||
def role!(role : Schema::UserRole, external = true) : Bool
|
||||
raise "Invalid permissions" unless role? role, external: external
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def admin? : Bool
|
||||
role? Schema::UserRole::Admin
|
||||
private macro role_check(*roles)
|
||||
{% for role in roles %}
|
||||
{% name = role.names.last.underscore %}
|
||||
|
||||
def {{ name }}?(external = true) : Bool
|
||||
role? {{ role }}, external: external
|
||||
end
|
||||
|
||||
def {{ name }}!(external = true) : Bool
|
||||
role! {{ role }}, external: external
|
||||
end
|
||||
{% end %}
|
||||
end
|
||||
|
||||
def admin! : Bool
|
||||
role! Schema::UserRole::Admin
|
||||
end
|
||||
|
||||
def teacher? : Bool
|
||||
role? Schema::UserRole::Teacher
|
||||
end
|
||||
|
||||
def teacher! : Bool
|
||||
role! Schema::UserRole::Teacher
|
||||
end
|
||||
|
||||
def student? : Bool
|
||||
role? Schema::UserRole::Student
|
||||
end
|
||||
|
||||
def student! : Bool
|
||||
role! Schema::UserRole::Student
|
||||
end
|
||||
role_check Schema::UserRole::Admin, Schema::UserRole::Teacher, Schema::UserRole::Student
|
||||
|
||||
def self.db_eq_role?(external : Granite::Base, role : Schema::UserRole) : Bool
|
||||
role == case external
|
||||
|
|
Loading…
Reference in a new issue