Skip to content
Snippets Groups Projects
Commit fa50abf5 authored by Arnaud Levy's avatar Arnaud Levy
Browse files

Merge branch 'master' of github.com:noesya/osuny

parents 9cdb8378 9dc89a85
No related branches found
No related tags found
No related merge requests found
......@@ -57,6 +57,6 @@ class Server::UniversitiesController < Server::ApplicationController
end
def university_params
params.require(:university).permit(:name, :address, :zipcode, :city, :country, :private, :identifier, :logo, :logo_delete)
params.require(:university).permit(:name, :address, :zipcode, :city, :country, :private, :identifier, :logo, :logo_delete, :sms_sender_name)
end
end
......@@ -11,14 +11,12 @@
# mail_from_name :string
# name :string
# private :boolean
# sms_sender_name :string
# zipcode :string
# created_at :datetime not null
# updated_at :datetime not null
#
class University < ApplicationRecord
validates_presence_of :name
scope :ordered, -> { order(:name) }
include WithCommunication
include WithEducation
include WithIdentifier
......@@ -27,6 +25,11 @@ class University < ApplicationRecord
has_one_attached_deletable :logo
validates_presence_of :name
validates :sms_sender_name, presence: true, length: { maximum: 11 }
scope :ordered, -> { order(:name) }
def to_s
"#{name}"
end
......
......@@ -25,6 +25,7 @@ module User::WithRoles
end
def set_default_role
return if server_admin?
if User.all.empty?
self.role = :server_admin
elsif university.users.not_server_admin.empty?
......
......@@ -3,7 +3,6 @@ module User::WithSyncBetweenUniversities
included do
after_save :sync_from_current_university, if: Proc.new { |user| user.server_admin? }
after_destroy :remove_from_all_universities, if: Proc.new { |user| user.server_admin? }
def self.synchronize_server_admin_users(university_id)
university = University.where.not(id: university_id).first
......@@ -20,8 +19,8 @@ module User::WithSyncBetweenUniversities
encrypted_password: self.encrypted_password,
first_name: self.first_name,
last_name: self.last_name,
mobile_phone: self.phone,
role: self.role
mobile_phone: self.mobile_phone,
role: :server_admin
)
end
end
......@@ -35,14 +34,11 @@ module User::WithSyncBetweenUniversities
user.assign_attributes(university_id: university.id, picture_infos: nil,
password: "MyNewPasswordIs2Strong!", password_confirmation: "MyNewPasswordIs2Strong!",
reset_password_token: nil, unlock_token: nil, encrypted_otp_secret_key: nil,
confirmation_token: Devise.friendly_token, confirmed_at: Time.now)
confirmation_token: Devise.friendly_token, confirmed_at: Time.now,
role: :server_admin)
# as a new user must have a password and we can't access previous user password
user.save
user.update_column(:encrypted_password, self.encrypted_password) if user.valid?
end
def remove_from_all_universities
User.destroy_by(email: email)
end
end
module Sendinblue
class SmsService
DEFAULT_SENDER_NAME = 'Osuny'.freeze
def self.send_mfa_code(user, code)
duration = ActiveSupport::Duration.build(Rails.application.config.devise.direct_otp_valid_for).inspect
message = "#{code} est votre code d'authentification sur #{user.university} (valide #{duration})"
......@@ -9,9 +11,12 @@ module Sendinblue
private
def self.send_message(user, message)
sender_name = user.university.sms_sender_name
sender_name ||= DEFAULT_SENDER_NAME
api_instance = SibApiV3Sdk::TransactionalSMSApi.new
send_transac_sms = SibApiV3Sdk::SendTransacSms.new(
sender: user.university.name,
sender: sender_name,
recipient: user.mobile_phone,
content: message
)
......
......@@ -4,6 +4,7 @@
<%= f.input :name %>
<%= f.input :identifier %>
<%= f.input :private %>
<%= f.input :sms_sender_name %>
</div>
<div class="col-md-4">
<%= f.input :address %>
......
......@@ -14,6 +14,7 @@ fr:
private: Etablissement privé
public: Public
public_or_private: Public/privé
sms_sender_name: Nom de l'expéditeur SMS
url: 'URL'
zipcode: Code postal
user:
......@@ -97,6 +98,8 @@ fr:
error_notification:
default_message: "Les erreurs ci-dessous empêchent la validation :"
hints:
university:
sms_sender_name: "11 caractères maximum."
user:
mobile_phone: "Format international (+XX). En renseignant ce champ, vous acceptez de recevoir vos codes de double authentification par SMS."
simple_form_password_with_hints:
......
class AddSmsSenderNameToUniversities < ActiveRecord::Migration[6.1]
def change
add_column :universities, :sms_sender_name, :string
end
end
......@@ -286,6 +286,7 @@ ActiveRecord::Schema.define(version: 2021_10_19_092503) do
t.datetime "updated_at", precision: 6, null: false
t.string "mail_from_name"
t.string "mail_from_address"
t.string "sms_sender_name"
end
create_table "users", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t|
......
......@@ -9,11 +9,15 @@ namespace :app do
desc 'Fix things'
task fix: :environment do
language = Language.first
User.find_each { |u|
u.confirm
u.role ||= :visitor
u.language ||= language
u.save
User.find_each { |user|
user.confirm
user.role ||= :visitor
user.language ||= language
user.save
}
University.find_each { |university|
university.sms_sender_name ||= 'Osuny'
university.save
}
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment