Add role to ExternalUser and update it via LTI
This commit is contained in:
@ -52,6 +52,21 @@ module Lti
|
|||||||
end
|
end
|
||||||
private :external_user_name
|
private :external_user_name
|
||||||
|
|
||||||
|
def external_user_role(provider)
|
||||||
|
result = 'learner'
|
||||||
|
provider.roles.each do |role|
|
||||||
|
case role.downcase!
|
||||||
|
when 'administrator'
|
||||||
|
result = 'admin'
|
||||||
|
when 'instructor'
|
||||||
|
result = 'teacher' if result == 'learner'
|
||||||
|
else # 'learner'
|
||||||
|
next
|
||||||
|
end
|
||||||
|
end
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
def refuse_lti_launch(options = {})
|
def refuse_lti_launch(options = {})
|
||||||
return_to_consumer(lti_errorlog: options[:message], lti_errormsg: t('sessions.oauth.failure'))
|
return_to_consumer(lti_errorlog: options[:message], lti_errormsg: t('sessions.oauth.failure'))
|
||||||
end
|
end
|
||||||
@ -129,7 +144,7 @@ module Lti
|
|||||||
|
|
||||||
def set_current_user
|
def set_current_user
|
||||||
@current_user = ExternalUser.find_or_create_by(consumer_id: @consumer.id, external_id: @provider.user_id)
|
@current_user = ExternalUser.find_or_create_by(consumer_id: @consumer.id, external_id: @provider.user_id)
|
||||||
@current_user.update(email: external_user_email(@provider), name: external_user_name(@provider))
|
@current_user.update(email: external_user_email(@provider), name: external_user_name(@provider), role: external_user_role(@provider))
|
||||||
end
|
end
|
||||||
private :set_current_user
|
private :set_current_user
|
||||||
|
|
||||||
|
@ -3,6 +3,7 @@ h1 = @user.name
|
|||||||
= row(label: 'external_user.name', value: @user.name)
|
= row(label: 'external_user.name', value: @user.name)
|
||||||
//= row(label: 'external_user.email', value: @user.email)
|
//= row(label: 'external_user.email', value: @user.email)
|
||||||
= row(label: 'external_user.consumer', value: link_to(@user.consumer, @user.consumer))
|
= row(label: 'external_user.consumer', value: link_to(@user.consumer, @user.consumer))
|
||||||
|
= row(label: 'external_user.role', value: t("users.roles.#{@user.role}"))
|
||||||
|
|
||||||
h4.mt-4 = link_to(t('.exercise_statistics'), statistics_external_user_path(@user))
|
h4.mt-4 = link_to(t('.exercise_statistics'), statistics_external_user_path(@user))
|
||||||
|
|
||||||
|
5
db/migrate/20181116143743_add_role_to_external_users.rb
Normal file
5
db/migrate/20181116143743_add_role_to_external_users.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
class AddRoleToExternalUsers < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :external_users, :role, :string, default: 'learner', null: false
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue
Block a user