preparations to replace session with lti_parameters object
This commit is contained in:
@ -10,6 +10,7 @@ class ApplicationController < ActionController::Base
|
|||||||
rescue_from Pundit::NotAuthorizedError, with: :render_not_authorized
|
rescue_from Pundit::NotAuthorizedError, with: :render_not_authorized
|
||||||
|
|
||||||
def current_user
|
def current_user
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
::NewRelic::Agent.add_custom_parameters({ external_user_id: session[:external_user_id], session_user_id: session[:user_id] })
|
::NewRelic::Agent.add_custom_parameters({ external_user_id: session[:external_user_id], session_user_id: session[:user_id] })
|
||||||
@current_user ||= ExternalUser.find_by(id: session[:external_user_id]) || login_from_session || login_from_other_sources
|
@current_user ||= ExternalUser.find_by(id: session[:external_user_id]) || login_from_session || login_from_other_sources
|
||||||
end
|
end
|
||||||
|
@ -44,6 +44,7 @@ module Lti
|
|||||||
private :external_user_name
|
private :external_user_name
|
||||||
|
|
||||||
def lti_outcome_service?
|
def lti_outcome_service?
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
session[:lti_parameters].try(:has_key?, 'lis_outcome_service_url')
|
session[:lti_parameters].try(:has_key?, 'lis_outcome_service_url')
|
||||||
end
|
end
|
||||||
private :lti_outcome_service?
|
private :lti_outcome_service?
|
||||||
@ -97,6 +98,7 @@ module Lti
|
|||||||
def send_score(score)
|
def send_score(score)
|
||||||
::NewRelic::Agent.add_custom_parameters({ score: score, session: session })
|
::NewRelic::Agent.add_custom_parameters({ score: score, session: session })
|
||||||
fail(Error, "Score #{score} must be between 0 and #{MAXIMUM_SCORE}!") unless (0..MAXIMUM_SCORE).include?(score)
|
fail(Error, "Score #{score} must be between 0 and #{MAXIMUM_SCORE}!") unless (0..MAXIMUM_SCORE).include?(score)
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
provider = build_tool_provider(consumer: Consumer.find_by(id: session[:consumer_id]), parameters: session[:lti_parameters])
|
provider = build_tool_provider(consumer: Consumer.find_by(id: session[:consumer_id]), parameters: session[:lti_parameters])
|
||||||
if provider.nil?
|
if provider.nil?
|
||||||
{status: 'error'}
|
{status: 'error'}
|
||||||
@ -116,9 +118,15 @@ module Lti
|
|||||||
private :set_current_user
|
private :set_current_user
|
||||||
|
|
||||||
def store_lti_session_data(options = {})
|
def store_lti_session_data(options = {})
|
||||||
session[:consumer_id] = options[:consumer].id
|
exercise = Exercise.where(token: options[:parameters][:custom_token]).first
|
||||||
session[:external_user_id] = @current_user.id
|
exercise_id = exercise.id unless exercise.nil?
|
||||||
session[:lti_parameters] = options[:parameters].slice(*SESSION_PARAMETERS)
|
|
||||||
|
lti_parameters = LtiParameter.find_or_create_by(consumers_id: options[:consumer].id,
|
||||||
|
external_user_id: options[:parameters][:user_id].to_s,
|
||||||
|
exercises_id: exercise_id)
|
||||||
|
|
||||||
|
lti_parameters.lti_parameters = options[:parameters].slice(*SESSION_PARAMETERS).to_json
|
||||||
|
lti_parameters.save!
|
||||||
end
|
end
|
||||||
private :store_lti_session_data
|
private :store_lti_session_data
|
||||||
|
|
||||||
|
@ -157,6 +157,7 @@ class ExercisesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def redirect_to_lti_return_path
|
def redirect_to_lti_return_path
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
path = lti_return_path(consumer_id: session[:consumer_id], submission_id: @submission.id, url: consumer_return_url(build_tool_provider(consumer: Consumer.find_by(id: session[:consumer_id]), parameters: session[:lti_parameters])))
|
path = lti_return_path(consumer_id: session[:consumer_id], submission_id: @submission.id, url: consumer_return_url(build_tool_provider(consumer: Consumer.find_by(id: session[:consumer_id]), parameters: session[:lti_parameters])))
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html { redirect_to(path) }
|
format.html { redirect_to(path) }
|
||||||
|
@ -27,6 +27,7 @@ div id='output_sidebar_uncollapsed' class='hidden col-sm-12 enforce-bottom-margi
|
|||||||
.progress-bar role='progressbar'
|
.progress-bar role='progressbar'
|
||||||
|
|
||||||
br
|
br
|
||||||
|
/ #Todo replace session with lti_parameter
|
||||||
- if session[:lti_parameters].try(:has_key?, 'lis_outcome_service_url')
|
- if session[:lti_parameters].try(:has_key?, 'lis_outcome_service_url')
|
||||||
p.text-center = render('editor_button', classes: 'btn-lg btn-success', data: {:'data-url' => submit_exercise_path(@exercise)}, icon: 'fa fa-send', id: 'submit', label: t('exercises.editor.submit'))
|
p.text-center = render('editor_button', classes: 'btn-lg btn-success', data: {:'data-url' => submit_exercise_path(@exercise)}, icon: 'fa fa-send', id: 'submit', label: t('exercises.editor.submit'))
|
||||||
- else
|
- else
|
||||||
|
@ -2,9 +2,9 @@ class CreateLtiParameters < ActiveRecord::Migration
|
|||||||
def change
|
def change
|
||||||
create_table :lti_parameters do |t|
|
create_table :lti_parameters do |t|
|
||||||
t.string :external_user_id
|
t.string :external_user_id
|
||||||
t.string :consumer_id
|
t.belongs_to :consumers
|
||||||
t.string :exercise_id
|
t.belongs_to :exercises
|
||||||
t.text :lti_return_url
|
t.column :lti_parameters, :jsonb
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
@ -1,5 +0,0 @@
|
|||||||
class RemoveLtiReturnUrlFromLtiParameter < ActiveRecord::Migration
|
|
||||||
def change
|
|
||||||
remove_column :lti_parameters, :lti_return_url, :text
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,5 +0,0 @@
|
|||||||
class AddLtiParametersToLtiParameter < ActiveRecord::Migration
|
|
||||||
def change
|
|
||||||
add_column :lti_parameters, :lti_parameters, :json
|
|
||||||
end
|
|
||||||
end
|
|
@ -182,15 +182,6 @@ ActiveRecord::Schema.define(version: 20161216131239) do
|
|||||||
add_index "internal_users", ["remember_me_token"], name: "index_internal_users_on_remember_me_token", using: :btree
|
add_index "internal_users", ["remember_me_token"], name: "index_internal_users_on_remember_me_token", using: :btree
|
||||||
add_index "internal_users", ["reset_password_token"], name: "index_internal_users_on_reset_password_token", using: :btree
|
add_index "internal_users", ["reset_password_token"], name: "index_internal_users_on_reset_password_token", using: :btree
|
||||||
|
|
||||||
create_table "lti_parameters", force: true do |t|
|
|
||||||
t.string "external_user_id"
|
|
||||||
t.string "consumer_id"
|
|
||||||
t.string "exercise_id"
|
|
||||||
t.datetime "created_at"
|
|
||||||
t.datetime "updated_at"
|
|
||||||
t.json "lti_parameters"
|
|
||||||
end
|
|
||||||
|
|
||||||
create_table "request_for_comments", force: true do |t|
|
create_table "request_for_comments", force: true do |t|
|
||||||
t.integer "user_id", null: false
|
t.integer "user_id", null: false
|
||||||
t.integer "exercise_id", null: false
|
t.integer "exercise_id", null: false
|
||||||
|
@ -116,6 +116,7 @@ describe Lti do
|
|||||||
context 'with an valid score' do
|
context 'with an valid score' do
|
||||||
context 'with a tool provider' do
|
context 'with a tool provider' do
|
||||||
before(:each) do
|
before(:each) do
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
controller.session[:consumer_id] = consumer.id
|
controller.session[:consumer_id] = consumer.id
|
||||||
controller.session[:lti_parameters] = {}
|
controller.session[:lti_parameters] = {}
|
||||||
end
|
end
|
||||||
|
@ -4,6 +4,7 @@ describe ApplicationController do
|
|||||||
describe '#current_user' do
|
describe '#current_user' do
|
||||||
context 'with an external user' do
|
context 'with an external user' do
|
||||||
let(:external_user) { FactoryGirl.create(:external_user) }
|
let(:external_user) { FactoryGirl.create(:external_user) }
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
before(:each) { session[:external_user_id] = external_user.id }
|
before(:each) { session[:external_user_id] = external_user.id }
|
||||||
|
|
||||||
it 'returns the external user' do
|
it 'returns the external user' do
|
||||||
|
@ -78,6 +78,7 @@ describe SessionsController do
|
|||||||
it 'assigns the current user' do
|
it 'assigns the current user' do
|
||||||
request
|
request
|
||||||
expect(assigns(:current_user)).to be_an(ExternalUser)
|
expect(assigns(:current_user)).to be_an(ExternalUser)
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
expect(session[:external_user_id]).to eq(user.id)
|
expect(session[:external_user_id]).to eq(user.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -174,6 +175,7 @@ describe SessionsController do
|
|||||||
let(:submission) { FactoryGirl.create(:submission, exercise: FactoryGirl.create(:dummy)) }
|
let(:submission) { FactoryGirl.create(:submission, exercise: FactoryGirl.create(:dummy)) }
|
||||||
|
|
||||||
before(:each) do
|
before(:each) do
|
||||||
|
#Todo replace session with lti_parameter
|
||||||
session[:consumer_id] = consumer.id
|
session[:consumer_id] = consumer.id
|
||||||
session[:lti_parameters] = {}
|
session[:lti_parameters] = {}
|
||||||
end
|
end
|
||||||
|
@ -32,7 +32,7 @@ FactoryGirl.define do
|
|||||||
factory :java, class: ExecutionEnvironment do
|
factory :java, class: ExecutionEnvironment do
|
||||||
created_by_teacher
|
created_by_teacher
|
||||||
default_memory_limit
|
default_memory_limit
|
||||||
docker_image 'hklement/ubuntu-java:latest'
|
docker_image 'openhpi/co_execenv_java:latest'
|
||||||
association :file_type, factory: :dot_java
|
association :file_type, factory: :dot_java
|
||||||
help
|
help
|
||||||
name 'Java 8'
|
name 'Java 8'
|
||||||
@ -78,7 +78,7 @@ FactoryGirl.define do
|
|||||||
factory :python, class: ExecutionEnvironment do
|
factory :python, class: ExecutionEnvironment do
|
||||||
created_by_teacher
|
created_by_teacher
|
||||||
default_memory_limit
|
default_memory_limit
|
||||||
docker_image 'hklement/ubuntu-python:latest'
|
docker_image 'openhpi/co_execenv_python:latest'
|
||||||
association :file_type, factory: :dot_py
|
association :file_type, factory: :dot_py
|
||||||
help
|
help
|
||||||
name 'Python 3.4'
|
name 'Python 3.4'
|
||||||
|
Reference in New Issue
Block a user