alchemy-devise 4.2.1 → 4.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/Rakefile +3 -1
- data/app/controllers/alchemy/admin/passwords_controller.rb +34 -0
- data/app/controllers/alchemy/admin/user_sessions_controller.rb +65 -0
- data/app/controllers/alchemy/admin/users_controller.rb +2 -3
- data/app/controllers/alchemy/base_controller_extension.rb +13 -7
- data/app/mailers/alchemy/notifications.rb +1 -1
- data/app/models/alchemy/user.rb +0 -8
- data/app/views/alchemy/{passwords → admin/passwords}/edit.html.erb +2 -2
- data/app/views/alchemy/{passwords → admin/passwords}/new.html.erb +2 -2
- data/app/views/alchemy/{user_sessions → admin/user_sessions}/new.html.erb +1 -1
- data/app/views/alchemy/admin/users/_fields.html.erb +0 -4
- data/app/views/alchemy/notifications/alchemy_user_created.de.text.erb +1 -1
- data/app/views/alchemy/notifications/alchemy_user_created.en.text.erb +1 -1
- data/app/views/alchemy/notifications/alchemy_user_created.es.text.erb +1 -1
- data/app/views/alchemy/notifications/alchemy_user_created.ru.text.erb +1 -1
- data/app/views/alchemy/notifications/member_created.de.text.erb +1 -1
- data/app/views/alchemy/notifications/member_created.en.text.erb +1 -1
- data/app/views/alchemy/notifications/member_created.es.text.erb +1 -1
- data/app/views/alchemy/notifications/member_created.ru.text.erb +1 -1
- data/app/views/alchemy/notifications/reset_password_instructions.de.text.erb +1 -1
- data/app/views/alchemy/notifications/reset_password_instructions.en.text.erb +1 -1
- data/app/views/alchemy/notifications/reset_password_instructions.es.text.erb +1 -1
- data/app/views/alchemy/notifications/reset_password_instructions.ru.text.erb +1 -1
- data/config/initializers/alchemy.rb +6 -0
- data/config/routes.rb +19 -14
- data/db/migrate/20131015124700_create_alchemy_users.rb +0 -1
- data/lib/alchemy/devise/version.rb +1 -1
- metadata +48 -19
- data/app/controllers/alchemy/passwords_controller.rb +0 -31
- data/app/controllers/alchemy/user_sessions_controller.rb +0 -62
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6217ebc5ce12c866ae9b27e1d80a181c302e96f0accced11e0ef9a3df2fdc4be
|
4
|
+
data.tar.gz: c05e0c5d4a260926f293073c00d440b9968dba46a10ea0326f4068ee19065bff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0dc57c2c68c836f3ce8f7f1e8c029dc8a8e6ff5ade4a052e1d0b99dcd1cd901d08215b22d046da3d089a950a8b18c5b0d69a95d665ae70803d559bb3040ccdcd
|
7
|
+
data.tar.gz: 033e220a727c0727975b90df7c589b2ecb4a9aefd8bc90e37046ce63be666cebf47a5583780fad2afab4ceffb12aa953aae4c134a4d6aee05a92fa955abbc6d5
|
data/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
## Devise based authentication for AlchemyCMS
|
1
|
+
## Devise based authentication for AlchemyCMS
|
2
2
|
|
3
3
|
[![Build Status](https://secure.travis-ci.org/AlchemyCMS/alchemy-devise.svg?branch=master)](http://travis-ci.org/AlchemyCMS/alchemy-devise)
|
4
4
|
|
5
5
|
[![Gem Version](https://badge.fury.io/rb/alchemy-devise.svg)](http://badge.fury.io/rb/alchemy-devise) [![Test Coverage](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/badges/coverage.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/coverage) [![Code Climate](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/badges/gpa.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy-devise) [![security](https://hakiri.io/github/AlchemyCMS/alchemy-devise/master.svg)](https://hakiri.io/github/AlchemyCMS/alchemy-devise/master)
|
6
6
|
|
7
|
-
AlchemyCMS has no authentication in its core. So it is
|
7
|
+
AlchemyCMS has no authentication in its core. So it is possible to bring your own authentication and use it to authorize users in AlchemyCMS. If you don't have your own authentication, you can use this gem.
|
8
8
|
|
9
9
|
## Install
|
10
10
|
|
@@ -12,7 +12,7 @@ Just put the gem into your projects `Gemfile`.
|
|
12
12
|
|
13
13
|
```ruby
|
14
14
|
# Gemfile
|
15
|
-
gem 'alchemy-devise'
|
15
|
+
gem 'alchemy-devise'
|
16
16
|
```
|
17
17
|
|
18
18
|
and run `bundle install`.
|
data/Rakefile
CHANGED
@@ -33,7 +33,9 @@ namespace :alchemy do
|
|
33
33
|
system <<-BASH
|
34
34
|
cd spec/dummy
|
35
35
|
export RAILS_ENV=test
|
36
|
-
bin/rake
|
36
|
+
bin/rake railties:install:migrations
|
37
|
+
bin/rake db:drop db:create db:migrate
|
38
|
+
bin/rails g alchemy:install --force
|
37
39
|
bin/rails g alchemy:devise:install --force
|
38
40
|
cd -
|
39
41
|
BASH
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Alchemy
|
2
|
+
module Admin
|
3
|
+
class PasswordsController < ::Devise::PasswordsController
|
4
|
+
include Alchemy::Admin::Locale
|
5
|
+
|
6
|
+
if Alchemy.gem_version <= Gem::Version.new("4.9")
|
7
|
+
before_action { enforce_ssl if ssl_required? && !request.ssl? }
|
8
|
+
end
|
9
|
+
|
10
|
+
helper "Alchemy::Admin::Base"
|
11
|
+
|
12
|
+
layout "alchemy/admin"
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
# Override for Devise method
|
17
|
+
def new_session_path(resource_name)
|
18
|
+
alchemy.admin_login_path
|
19
|
+
end
|
20
|
+
|
21
|
+
def admin_edit_password_url(_resource, options = {})
|
22
|
+
alchemy.admin_edit_password_url(options)
|
23
|
+
end
|
24
|
+
|
25
|
+
def after_resetting_password_path_for(resource)
|
26
|
+
if can? :index, :alchemy_admin_dashboard
|
27
|
+
alchemy.admin_dashboard_path
|
28
|
+
else
|
29
|
+
alchemy.root_path
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_dependency "alchemy/version"
|
4
|
+
|
5
|
+
module Alchemy
|
6
|
+
module Admin
|
7
|
+
class UserSessionsController < ::Devise::SessionsController
|
8
|
+
include Alchemy::Admin::Locale
|
9
|
+
|
10
|
+
protect_from_forgery prepend: true
|
11
|
+
|
12
|
+
if Alchemy.gem_version <= Gem::Version.new("4.9")
|
13
|
+
before_action except: "destroy" do
|
14
|
+
enforce_ssl if ssl_required? && !request.ssl?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
before_action :check_user_count, :only => :new
|
18
|
+
|
19
|
+
helper "Alchemy::Admin::Base"
|
20
|
+
|
21
|
+
layout "alchemy/admin"
|
22
|
+
|
23
|
+
def create
|
24
|
+
authenticate_user!
|
25
|
+
|
26
|
+
if user_signed_in?
|
27
|
+
if session[:redirect_path].blank?
|
28
|
+
redirect_path = admin_dashboard_path
|
29
|
+
else
|
30
|
+
# We have to strip double slashes from beginning of path, because of strange rails/rack bug.
|
31
|
+
redirect_path = session[:redirect_path].gsub(/\A\/{2,}/, "/")
|
32
|
+
end
|
33
|
+
redirect_to redirect_path,
|
34
|
+
notice: t(:signed_in, scope: "devise.sessions")
|
35
|
+
else
|
36
|
+
super
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def destroy
|
41
|
+
current_alchemy_user.try(:unlock_pages!)
|
42
|
+
cookies.clear
|
43
|
+
session.clear
|
44
|
+
super
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def check_user_count
|
50
|
+
if User.count == 0
|
51
|
+
redirect_to admin_signup_path
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Overwriting the default of Devise
|
56
|
+
def after_sign_out_path_for(resource_or_scope)
|
57
|
+
if request.referer.blank? || request.referer.to_s =~ /admin/
|
58
|
+
root_path
|
59
|
+
else
|
60
|
+
request.referer
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -2,7 +2,7 @@ module Alchemy
|
|
2
2
|
module Admin
|
3
3
|
class UsersController < ResourcesController
|
4
4
|
|
5
|
-
before_action :
|
5
|
+
before_action :set_roles, except: [:index, :destroy]
|
6
6
|
|
7
7
|
load_and_authorize_resource class: Alchemy::User,
|
8
8
|
only: [:edit, :update, :destroy]
|
@@ -67,13 +67,12 @@ module Alchemy
|
|
67
67
|
|
68
68
|
private
|
69
69
|
|
70
|
-
def
|
70
|
+
def set_roles
|
71
71
|
if can_update_role?
|
72
72
|
@user_roles = User::ROLES.map do |role|
|
73
73
|
[User.human_rolename(role), role]
|
74
74
|
end
|
75
75
|
end
|
76
|
-
@user_genders = User.genders_for_select
|
77
76
|
end
|
78
77
|
|
79
78
|
def user_params
|
@@ -1,12 +1,18 @@
|
|
1
|
-
Alchemy
|
2
|
-
|
1
|
+
module Alchemy
|
2
|
+
module BaseControllerExtension
|
3
|
+
def self.prepended(base)
|
4
|
+
base.before_action(:store_user_request_time)
|
5
|
+
end
|
3
6
|
|
4
|
-
|
7
|
+
private
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
# Stores the users request time.
|
10
|
+
def store_user_request_time
|
11
|
+
if alchemy_user_signed_in?
|
12
|
+
current_alchemy_user.store_request_time!
|
13
|
+
end
|
10
14
|
end
|
11
15
|
end
|
12
16
|
end
|
17
|
+
|
18
|
+
Alchemy::BaseController.prepend Alchemy::BaseControllerExtension
|
data/app/models/alchemy/user.rb
CHANGED
@@ -8,7 +8,6 @@ module Alchemy
|
|
8
8
|
:lastname,
|
9
9
|
:login,
|
10
10
|
:email,
|
11
|
-
:gender,
|
12
11
|
:language,
|
13
12
|
:password,
|
14
13
|
:password_confirmation,
|
@@ -41,13 +40,6 @@ module Alchemy
|
|
41
40
|
Alchemy.t("user_roles.#{role}")
|
42
41
|
end
|
43
42
|
|
44
|
-
def genders_for_select
|
45
|
-
[
|
46
|
-
[Alchemy.t('male'), 'male'],
|
47
|
-
[Alchemy.t('female'), 'female']
|
48
|
-
]
|
49
|
-
end
|
50
|
-
|
51
43
|
def logged_in_timeout
|
52
44
|
Config.get(:auto_logout_time).minutes.to_i
|
53
45
|
end
|
@@ -10,13 +10,13 @@
|
|
10
10
|
<%= devise_error_messages! %>
|
11
11
|
</div>
|
12
12
|
<% end %>
|
13
|
-
<%= alchemy_form_for resource, as: resource_name, url:
|
13
|
+
<%= alchemy_form_for resource, as: resource_name, url: admin_update_password_path, method: 'patch' do |f| %>
|
14
14
|
<%= f.hidden_field :reset_password_token %>
|
15
15
|
<%= f.input :password, autofocus: true, label: Alchemy.t("New password") %>
|
16
16
|
<%= f.input :password_confirmation, label: Alchemy.t("Confirm new password") %>
|
17
17
|
<div class="input link">
|
18
18
|
<small>
|
19
|
-
<%= link_to Alchemy.t(:back), alchemy.
|
19
|
+
<%= link_to Alchemy.t(:back), alchemy.admin_login_path %>
|
20
20
|
</small>
|
21
21
|
</div>
|
22
22
|
<%= f.submit Alchemy.t("Change password") %>
|
@@ -10,13 +10,13 @@
|
|
10
10
|
<%= devise_error_messages! %>
|
11
11
|
</div>
|
12
12
|
<% end %>
|
13
|
-
<%= alchemy_form_for :user, url:
|
13
|
+
<%= alchemy_form_for :user, url: admin_reset_password_path, html: {method: 'post'} do |f| %>
|
14
14
|
<%= f.input :email,
|
15
15
|
autofocus: true,
|
16
16
|
input_html: {value: params[:email]} %>
|
17
17
|
<div class="input link">
|
18
18
|
<small>
|
19
|
-
<%= link_to Alchemy.t(:back), alchemy.
|
19
|
+
<%= link_to Alchemy.t(:back), alchemy.admin_login_path %>
|
20
20
|
</small>
|
21
21
|
</div>
|
22
22
|
<%= f.submit Alchemy.t("Send reset instructions"), input_html: {class: 'secondary'} %>
|
@@ -10,6 +10,6 @@ Aus Sicherheitsgründen stellen wir Ihr Passwort hier nicht dar.
|
|
10
10
|
|
11
11
|
Wenn Sie Ihr Passwort vergessen haben oder dies Ihr erster Login ist, gehen Sie bitte auf:
|
12
12
|
|
13
|
-
<%= alchemy.
|
13
|
+
<%= alchemy.admin_new_password_url %>
|
14
14
|
|
15
15
|
Viel Spaß mit Alchemy!
|
@@ -8,6 +8,6 @@ Es wurde ein Zufallspasswort generiert. Aus Sicherheitsgründen wird dieses hier
|
|
8
8
|
|
9
9
|
Klicken Sie bitte daher auf den folgenden Link (*), um sich ein neues Passwort zu vergeben:
|
10
10
|
|
11
|
-
<%= alchemy.
|
11
|
+
<%= alchemy.admin_new_password_url(email: @user.email) %>
|
12
12
|
|
13
13
|
*) Sollte dies nicht funktionieren, so kopieren Sie Sich bitte diesen Link und tragen Sie ihn in die Adresszeile Ihres Webbrowsers ein.
|
@@ -8,6 +8,6 @@ The password was randomly created. For security reasons it is not displayed here
|
|
8
8
|
|
9
9
|
Please follow this link (*) to reset your password:
|
10
10
|
|
11
|
-
<%= alchemy.
|
11
|
+
<%= alchemy.admin_new_password_url(email: @user.email) %>
|
12
12
|
|
13
13
|
*) If this does not work, please copy the url and paste it into the address bar of your web browser.
|
@@ -8,6 +8,6 @@ La contraseña se ha generado aleatoriamente. Por razones de seguridad no se mos
|
|
8
8
|
|
9
9
|
Por favor, accede este enlace (*) para reiniciar tu contraseña:
|
10
10
|
|
11
|
-
<%= alchemy.
|
11
|
+
<%= alchemy.admin_new_password_url(email: @user.email) %>
|
12
12
|
|
13
13
|
*) Si esto no funciona, por favor, copia el enlace y pegalo en el campo de direcciones de tu navegador web.
|
@@ -8,6 +8,6 @@
|
|
8
8
|
|
9
9
|
Пожалуйста, пройдите по ссылке (*), чтобы назначить собственный пароль:
|
10
10
|
|
11
|
-
<%= alchemy.
|
11
|
+
<%= alchemy.admin_new_password_url(email: @user.email) %>
|
12
12
|
|
13
13
|
*) Если ссылка не работает, пожалуйста, скопируйте ее в адресную строку вашего браузера.
|
@@ -2,7 +2,7 @@ Hallo <%= @user.fullname %>.
|
|
2
2
|
|
3
3
|
Sie haben angefordert Ihr Passwort zurückzusetzen. Dies kann durch anklicken des nachfolgenden Links bestätigt werden.
|
4
4
|
|
5
|
-
<%= alchemy.
|
5
|
+
<%= alchemy.admin_edit_password_url(@user, reset_password_token: @token) %>
|
6
6
|
|
7
7
|
Wenn Sie diese Zurücksetzung nicht angefragt haben, dann können Sie diese E-Mail einfach ignorieren.
|
8
8
|
Ihr Passwort wird erst dann zurückgesetzt, wenn Sie den Link anklicken.
|
@@ -2,7 +2,7 @@ Hello <%= @user.name %>.
|
|
2
2
|
|
3
3
|
You have requested to change your password. Please confirm this by clicking the link below.
|
4
4
|
|
5
|
-
<%= alchemy.
|
5
|
+
<%= alchemy.admin_edit_password_url(@user, reset_password_token: @token) %>
|
6
6
|
|
7
7
|
If you didn't request this, please ignore this email.
|
8
8
|
Your password won't change until you access the link above and create a new one.
|
@@ -2,7 +2,7 @@ Hola <%= @user.name %>.
|
|
2
2
|
|
3
3
|
Has solicitado modificar tu contraseña. Por favor, confírmalo pulsando en el siguiente enlace.
|
4
4
|
|
5
|
-
<%= alchemy.
|
5
|
+
<%= alchemy.admin_edit_password_url(@user, reset_password_token: @token) %>
|
6
6
|
|
7
7
|
Si no has sido tu el que ha hecho la solicitud, ignora este correo.
|
8
8
|
Tu contraseña no cambiará hasta que no accedas al enlace de arriba y generes una nueva.
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Вы сделали запрос на смену пароля. Пожалуйста подтвердите это, нажав на ссылку ниже.
|
4
4
|
|
5
|
-
<%= alchemy.
|
5
|
+
<%= alchemy.admin_edit_password_url(@user, reset_password_token: @token) %>
|
6
6
|
|
7
7
|
Если вы не делали запрос, просто проигнорируйте это письмо.
|
8
8
|
Ваш пароль не изменится до тех пор, пока вы не перейдете по ссылке и сами не измените его.
|
@@ -18,3 +18,9 @@ Alchemy.user_class_name = 'Alchemy::User'
|
|
18
18
|
Alchemy.signup_path = '/admin/signup'
|
19
19
|
Alchemy.login_path = '/admin/login'
|
20
20
|
Alchemy.logout_path = '/admin/logout'
|
21
|
+
|
22
|
+
if Alchemy.respond_to?(:logout_method)
|
23
|
+
Rails.application.config.after_initialize do
|
24
|
+
Alchemy.logout_method = Devise.sign_out_via
|
25
|
+
end
|
26
|
+
end
|
data/config/routes.rb
CHANGED
@@ -1,22 +1,29 @@
|
|
1
1
|
Alchemy::Engine.routes.draw do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
namespace :admin, {
|
3
|
+
path: Alchemy.admin_path,
|
4
|
+
constraints: Alchemy.admin_constraints
|
5
|
+
} do
|
6
|
+
|
7
|
+
devise_for :user,
|
8
|
+
class_name: 'Alchemy::User',
|
9
|
+
singular: :user,
|
10
|
+
skip: :all,
|
11
|
+
controllers: {
|
12
|
+
sessions: 'alchemy/admin/user_sessions',
|
13
|
+
passwords: 'alchemy/admin/passwords'
|
14
|
+
},
|
15
|
+
router_name: :alchemy
|
8
16
|
|
9
|
-
scope Alchemy.admin_path, {constraints: Alchemy.admin_constraints} do
|
10
17
|
devise_scope :user do
|
11
|
-
get '/dashboard' => '
|
18
|
+
get '/dashboard' => 'dashboard#index',
|
12
19
|
:as => :user_root
|
13
|
-
get '/signup' => '
|
14
|
-
:as => :
|
20
|
+
get '/signup' => 'users#signup',
|
21
|
+
:as => :signup
|
15
22
|
get '/login' => 'user_sessions#new',
|
16
23
|
:as => :login
|
17
24
|
post '/login' => 'user_sessions#create'
|
18
|
-
|
19
|
-
:as => :logout
|
25
|
+
match '/logout' => 'user_sessions#destroy',
|
26
|
+
:as => :logout, via: Devise.sign_out_via
|
20
27
|
|
21
28
|
get '/passwords' => 'passwords#new',
|
22
29
|
:as => :new_password
|
@@ -27,9 +34,7 @@ Alchemy::Engine.routes.draw do
|
|
27
34
|
patch '/passwords' => 'passwords#update',
|
28
35
|
:as => :update_password
|
29
36
|
end
|
30
|
-
end
|
31
37
|
|
32
|
-
namespace :admin, {path: Alchemy.admin_path, constraints: Alchemy.admin_constraints} do
|
33
38
|
resources :users
|
34
39
|
end
|
35
40
|
end
|
@@ -6,7 +6,6 @@ class CreateAlchemyUsers < ActiveRecord::Migration[4.2]
|
|
6
6
|
t.string "lastname"
|
7
7
|
t.string "login"
|
8
8
|
t.string "email"
|
9
|
-
t.string "gender"
|
10
9
|
t.string "language"
|
11
10
|
t.string "encrypted_password", limit: 128, default: "", null: false
|
12
11
|
t.string "password_salt", limit: 128, default: "", null: false
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alchemy-devise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas von Deyen
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: alchemy_cms
|
@@ -16,40 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.1.0
|
19
|
+
version: 4.1.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '5.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 4.1.0
|
29
|
+
version: 4.1.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '5.1'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: devise
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 4.
|
39
|
+
version: 4.7.1
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '5'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 4.
|
49
|
+
version: 4.7.1
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
52
|
+
version: '5'
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: capybara
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,6 +78,20 @@ dependencies:
|
|
78
78
|
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '0'
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: rails-controller-testing
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
81
95
|
- !ruby/object:Gem::Dependency
|
82
96
|
name: rspec-activemodel-mocks
|
83
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,14 +112,28 @@ dependencies:
|
|
98
112
|
requirements:
|
99
113
|
- - "~>"
|
100
114
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
115
|
+
version: 4.0.0.beta2
|
102
116
|
type: :development
|
103
117
|
prerelease: false
|
104
118
|
version_requirements: !ruby/object:Gem::Requirement
|
105
119
|
requirements:
|
106
120
|
- - "~>"
|
107
121
|
- !ruby/object:Gem::Version
|
108
|
-
version:
|
122
|
+
version: 4.0.0.beta2
|
123
|
+
- !ruby/object:Gem::Dependency
|
124
|
+
name: simplecov
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
type: :development
|
131
|
+
prerelease: false
|
132
|
+
version_requirements: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
109
137
|
description: Devise based user authentication for AlchemyCMS.
|
110
138
|
email:
|
111
139
|
- thomas@vondeyen.com
|
@@ -120,12 +148,15 @@ files:
|
|
120
148
|
- app/assets/stylesheets/alchemy-devise/login.scss
|
121
149
|
- app/assets/stylesheets/alchemy-devise/users.scss
|
122
150
|
- app/assets/stylesheets/alchemy/admin/alchemy-devise.css
|
151
|
+
- app/controllers/alchemy/admin/passwords_controller.rb
|
152
|
+
- app/controllers/alchemy/admin/user_sessions_controller.rb
|
123
153
|
- app/controllers/alchemy/admin/users_controller.rb
|
124
154
|
- app/controllers/alchemy/base_controller_extension.rb
|
125
|
-
- app/controllers/alchemy/passwords_controller.rb
|
126
|
-
- app/controllers/alchemy/user_sessions_controller.rb
|
127
155
|
- app/mailers/alchemy/notifications.rb
|
128
156
|
- app/models/alchemy/user.rb
|
157
|
+
- app/views/alchemy/admin/passwords/edit.html.erb
|
158
|
+
- app/views/alchemy/admin/passwords/new.html.erb
|
159
|
+
- app/views/alchemy/admin/user_sessions/new.html.erb
|
129
160
|
- app/views/alchemy/admin/users/_fields.html.erb
|
130
161
|
- app/views/alchemy/admin/users/_user.html.erb
|
131
162
|
- app/views/alchemy/admin/users/edit.html.erb
|
@@ -144,9 +175,6 @@ files:
|
|
144
175
|
- app/views/alchemy/notifications/reset_password_instructions.en.text.erb
|
145
176
|
- app/views/alchemy/notifications/reset_password_instructions.es.text.erb
|
146
177
|
- app/views/alchemy/notifications/reset_password_instructions.ru.text.erb
|
147
|
-
- app/views/alchemy/passwords/edit.html.erb
|
148
|
-
- app/views/alchemy/passwords/new.html.erb
|
149
|
-
- app/views/alchemy/user_sessions/new.html.erb
|
150
178
|
- config/initializers/alchemy.rb
|
151
179
|
- config/routes.rb
|
152
180
|
- config/spring.rb
|
@@ -183,7 +211,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
211
|
version: '0'
|
184
212
|
requirements: []
|
185
213
|
rubygems_version: 3.0.3
|
186
|
-
signing_key:
|
214
|
+
signing_key:
|
187
215
|
specification_version: 4
|
188
216
|
summary: Devise based user authentication for AlchemyCMS.
|
189
217
|
test_files: []
|
218
|
+
...
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module Alchemy
|
2
|
-
class PasswordsController < ::Devise::PasswordsController
|
3
|
-
include Alchemy::Admin::Locale
|
4
|
-
|
5
|
-
before_action { enforce_ssl if ssl_required? && !request.ssl? }
|
6
|
-
|
7
|
-
helper 'Alchemy::Admin::Base'
|
8
|
-
|
9
|
-
layout 'alchemy/admin'
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
# Override for Devise method
|
14
|
-
def new_session_path(resource_name)
|
15
|
-
alchemy.login_path
|
16
|
-
end
|
17
|
-
|
18
|
-
def edit_password_url(resource, options={})
|
19
|
-
alchemy.edit_password_url(options)
|
20
|
-
end
|
21
|
-
|
22
|
-
def after_resetting_password_path_for(resource)
|
23
|
-
if can? :index, :alchemy_admin_dashboard
|
24
|
-
alchemy.admin_dashboard_path
|
25
|
-
else
|
26
|
-
alchemy.root_path
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
module Alchemy
|
2
|
-
class UserSessionsController < ::Devise::SessionsController
|
3
|
-
include Alchemy::Admin::Locale
|
4
|
-
|
5
|
-
protect_from_forgery prepend: true
|
6
|
-
|
7
|
-
before_action except: 'destroy' do
|
8
|
-
enforce_ssl if ssl_required? && !request.ssl?
|
9
|
-
end
|
10
|
-
|
11
|
-
before_action :check_user_count, :only => :new
|
12
|
-
|
13
|
-
helper 'Alchemy::Admin::Base'
|
14
|
-
|
15
|
-
layout 'alchemy/admin'
|
16
|
-
|
17
|
-
def new
|
18
|
-
super
|
19
|
-
end
|
20
|
-
|
21
|
-
def create
|
22
|
-
authenticate_user!
|
23
|
-
|
24
|
-
if user_signed_in?
|
25
|
-
if session[:redirect_path].blank?
|
26
|
-
redirect_path = admin_dashboard_path
|
27
|
-
else
|
28
|
-
# We have to strip double slashes from beginning of path, because of strange rails/rack bug.
|
29
|
-
redirect_path = session[:redirect_path].gsub(/\A\/{2,}/, '/')
|
30
|
-
end
|
31
|
-
redirect_to redirect_path,
|
32
|
-
notice: t(:signed_in, scope: 'devise.sessions')
|
33
|
-
else
|
34
|
-
super
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def destroy
|
39
|
-
current_alchemy_user.try(:unlock_pages!)
|
40
|
-
cookies.clear
|
41
|
-
session.clear
|
42
|
-
super
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
def check_user_count
|
48
|
-
if User.count == 0
|
49
|
-
redirect_to admin_signup_path
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Overwriting the default of Devise
|
54
|
-
def after_sign_out_path_for(resource_or_scope)
|
55
|
-
if request.referer.blank? || request.referer.to_s =~ /admin/
|
56
|
-
root_path
|
57
|
-
else
|
58
|
-
request.referer
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|