Updated role checks
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing

This commit is contained in:
Dominic Grimm 2022-01-20 19:00:55 +01:00
parent dcd28a1993
commit d869738c21

View file

@ -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