forked from External/greenlight
Added mapping roles through email to site settings (#2373)
This commit is contained in:
@ -18,6 +18,7 @@
|
||||
|
||||
class AccountActivationsController < ApplicationController
|
||||
include Emailer
|
||||
include Authenticator
|
||||
|
||||
before_action :ensure_unauthenticated
|
||||
before_action :find_user_by_token, only: :edit
|
||||
@ -32,6 +33,7 @@ class AccountActivationsController < ApplicationController
|
||||
# If the user exists and is not verified and provided the correct token
|
||||
if @user && !@user.activated?
|
||||
# Verify user
|
||||
@user.set_role(initial_user_role(@user.email)) if @user.role.nil?
|
||||
@user.activate
|
||||
|
||||
# Redirect user to root with account pending flash if account is still pending
|
||||
|
@ -83,6 +83,19 @@ module Authenticator
|
||||
!allow_greenlight_accounts?
|
||||
end
|
||||
|
||||
# Sets the initial user role based on the email mapping
|
||||
def initial_user_role(email)
|
||||
mapping = @settings.get_value("Email Mapping")
|
||||
return "user" unless mapping.present?
|
||||
|
||||
mapping.split(",").each do |map|
|
||||
email_role = map.split("=")
|
||||
return email_role[1] if email.ends_with?(email_role[0])
|
||||
end
|
||||
|
||||
"user" # default to user if role not found
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Migrates all of the twitter users rooms to the new account
|
||||
|
@ -228,7 +228,7 @@ class SessionsController < ApplicationController
|
||||
|
||||
send_invite_user_signup_email(user) if invite_registration && !@user_exists
|
||||
|
||||
user.set_role :user if !@user_exists && user.role.nil?
|
||||
user.set_role(initial_user_role(user.email)) if !@user_exists && user.role.nil?
|
||||
|
||||
login(user)
|
||||
|
||||
|
@ -57,7 +57,7 @@ class UsersController < ApplicationController
|
||||
|
||||
# Sign in automatically if email verification is disabled or if user is already verified.
|
||||
if !Rails.configuration.enable_email_verification || @user.email_verified
|
||||
@user.set_role :user
|
||||
@user.set_role(initial_user_role(@user.email))
|
||||
|
||||
login(@user) && return
|
||||
end
|
||||
|
Reference in New Issue
Block a user