Updated user role auth

This commit is contained in:
Dominic Grimm 2022-01-20 18:09:11 +01:00
parent 777e71db5c
commit dcd28a1993
2 changed files with 29 additions and 9 deletions

View file

@ -47,15 +47,19 @@ module MW
true
end
def role?(role : Schema::UserRole) : Bool
@role == role == case @external
when Db::Admin
Schema::UserRole::Admin
when Db::Teacher
Schema::UserRole::Teacher
when Db::Student
Schema::UserRole::Student
def role?(*roles : Schema::UserRole) : Bool
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
end
end
false
end
def role!(role : Schema::UserRole) : Bool
@ -72,6 +76,22 @@ module MW
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
def self.db_eq_role?(external : Granite::Base, role : Schema::UserRole) : Bool
role == case external
when Db::Admin

View file

@ -109,7 +109,7 @@ module MW
@[GraphQL::Field]
def create_vote(context : Context, input : VoteCreateInput) : Vote
context.role! UserRole::Student
context.student!
if input.teacher_ids.any? { |id| Db::Teacher.find(id).nil? }
raise "Teachers not found"