From 9b5492c5e56a499847d676913926a103e313aad5 Mon Sep 17 00:00:00 2001 From: Simon Mayer <simon.mayer@onb.ac.at> Date: Tue, 27 Sep 2022 13:06:45 +0200 Subject: [PATCH] Update code for authentication to save also the labs user name, display it for public data sets --- app/controllers/concerns/authentication.rb | 14 ++++++++------ app/models/user.rb | 1 + app/views/dataset/_public_datasets_modal.html.erb | 2 +- db/migrate/20210721081005_create_users.rb | 1 + db/schema.rb | 1 + 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/controllers/concerns/authentication.rb b/app/controllers/concerns/authentication.rb index a64e42a..f6de47e 100644 --- a/app/controllers/concerns/authentication.rb +++ b/app/controllers/concerns/authentication.rb @@ -11,16 +11,17 @@ module Authentication end def authenticate_user! - id_dict = { "labs_user_id" => decrypt_header(request.headers["X-Auth-Newseye-Token"]) } - # id_dict = { "labs_user_id" => "42" } - @user = User.find_by(labs_user_id: id_dict["labs_user_id"]) + user_dict = { "labs_user_id" => decrypt_header(request.headers["X-Auth-Newseye-Token"])[0], + "labs_user_name" => decrypt_header(request.headers["X-Auth-Newseye-Token"])[1] } + # user_dict = { "labs_user_id" => "42", "labs_user_name" => "dummyuser" } + @user = User.find_by(labs_user_id: user_dict["labs_user_id"]) if @user if !session[:current_user_id] # puts "Logging in the user since current_user_id was not set" login @user end else - @user = User.new(id_dict) + @user = User.new(user_dict) if @user.save login @user end @@ -36,12 +37,12 @@ module Authentication private def current_user - Current.user ||= User.find_by(labs_user_id: decrypt_header(request.headers["X-Auth-Newseye-Token"])) + Current.user ||= User.find_by(labs_user_id: decrypt_header(request.headers["X-Auth-Newseye-Token"])[0]) # Current.user ||= User.find_by(labs_user_id: "42") end def decrypt_header(token) - private_key = ENV['NEP_AUTH_PRIVATE_KEY'] || "OFE_GQ8Ri8MX-0rH_T0e9ZFIhy-q0n2VxBWPoOyJ1I0=" + private_key = ENV["NEP_AUTH_PRIVATE_KEY"] || "OFE_GQ8Ri8MX-0rH_T0e9ZFIhy-q0n2VxBWPoOyJ1I0=" unpacked_key = Base64.urlsafe_decode64(private_key) signing_key = unpacked_key[0..15] encryption_key = unpacked_key[16..32] @@ -67,6 +68,7 @@ module Authentication d.key = encryption_key d.iv = iv plain = d.update(ciphertext) + d.final + token_tuple = plain.split(",", 2) rescue => e # do something now puts e.message, e.backtrace diff --git a/app/models/user.rb b/app/models/user.rb index f02f51b..08fcfee 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,5 +1,6 @@ class User < ApplicationRecord attribute :labs_user_id, presence: true, unique: true + attribute :labs_user_name, presence: true, unique: true has_many :experiments has_many :datasets diff --git a/app/views/dataset/_public_datasets_modal.html.erb b/app/views/dataset/_public_datasets_modal.html.erb index a8e1a98..98614d5 100644 --- a/app/views/dataset/_public_datasets_modal.html.erb +++ b/app/views/dataset/_public_datasets_modal.html.erb @@ -29,7 +29,7 @@ <td> <% user = User.find(d.user_id) %> <%# <% username = user.email[0...user.email.index('@')] %> - <% username = user.id %> + <% username = user.labs_user_name %> <%= username %> </td> <td> diff --git a/db/migrate/20210721081005_create_users.rb b/db/migrate/20210721081005_create_users.rb index d2be7d5..7d36ddb 100644 --- a/db/migrate/20210721081005_create_users.rb +++ b/db/migrate/20210721081005_create_users.rb @@ -2,6 +2,7 @@ class CreateUsers < ActiveRecord::Migration[6.1] def change create_table :users do |t| t.string :labs_user_id, null: false, unique: true + t.string :labs_user_name, null: false, unique: true t.timestamps null: false end diff --git a/db/schema.rb b/db/schema.rb index 332f259..43472e2 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -78,6 +78,7 @@ ActiveRecord::Schema.define(version: 2021_11_23_112405) do create_table "users", force: :cascade do |t| t.string "labs_user_id", null: false + t.string "labs_user_name", null: false t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.index ["labs_user_id"], name: "index_users_on_labs_user_id", unique: true -- GitLab