alchemy-devise 8.2.2 → 8.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -9
- data/app/assets/builds/alchemy-devise.css +1 -1
- data/app/assets/stylesheets/alchemy-devise/login.scss +80 -28
- data/app/assets/stylesheets/alchemy-devise.scss +1 -1
- data/app/controllers/alchemy/admin/users_controller.rb +2 -2
- data/app/models/alchemy/devise/ability.rb +4 -4
- data/app/models/alchemy/user.rb +19 -49
- data/app/views/alchemy/admin/passwords/edit.html.erb +26 -26
- data/app/views/alchemy/admin/passwords/new.html.erb +28 -27
- data/app/views/alchemy/admin/user_sessions/_logo.html.erb +3 -3
- data/app/views/alchemy/admin/user_sessions/new.html.erb +23 -22
- data/app/views/alchemy/admin/users/_fields.html.erb +13 -9
- data/app/views/alchemy/admin/users/_resource_table.html.erb +3 -3
- data/app/views/alchemy/admin/users/edit.html.erb +13 -6
- data/app/views/alchemy/admin/users/index.html.erb +15 -13
- data/app/views/alchemy/admin/users/signup.html.erb +9 -5
- data/config/initializers/alchemy.rb +1 -0
- data/config/locales/de.yml +2 -0
- data/config/locales/en.yml +2 -0
- data/lib/alchemy/devise/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9d09ae141f2a8fffa21c51258fa5d20d1b8b6d6b2dc93b5ace87d1be54e77652
|
|
4
|
+
data.tar.gz: d4671dc0ea62d25ddc2744025636e41fb3d447dc5a00a80c1106ab7298cd7a4e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3f2410f1c117abdfe91e7dc7b2b45ddf3a4a2428e08c78ed17cab964ecd60910a33dd1cd49f1805d58e701345549593a2f4dfdd75cc0823fba3c60e9c605df02
|
|
7
|
+
data.tar.gz: 6ad17f1c4cc4b7775185c6417e5d7cd7dc53ce768dc0dc0fe29f9d12db4b928a15c8bf93b394e940f0237ba818595d4f2534c41fabd8b2989e42068f691b9779
|
data/CHANGELOG.md
CHANGED
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 8.
|
|
3
|
+
## 8.4.0 (2026-09-01)
|
|
4
4
|
|
|
5
|
-
<!-- Release notes generated using configuration in .github/release.yml at 8.
|
|
5
|
+
<!-- Release notes generated using configuration in .github/release.yml at 8.4-stable -->
|
|
6
6
|
|
|
7
7
|
## What's Changed
|
|
8
|
+
### New Features
|
|
9
|
+
* feat: New login and signup screens by @tvdeyen in https://github.com/AlchemyCMS/alchemy-devise/pull/291
|
|
10
|
+
* feat(admin): Use primary action for add user button by @tvdeyen in https://github.com/AlchemyCMS/alchemy-devise/pull/292
|
|
11
|
+
* feat: Use `Alchemy::UserMethods` module by @tvdeyen in https://github.com/AlchemyCMS/alchemy-devise/pull/295
|
|
12
|
+
### Dependencies
|
|
13
|
+
* chore(deps-dev): update simplecov-cobertura requirement from ~> 3.0 to ~> 4.0 by @dependabot[bot] in https://github.com/AlchemyCMS/alchemy-devise/pull/286
|
|
14
|
+
* chore(deps-dev): bump sass from 1.101.0 to 1.102.0 by @dependabot[bot] in https://github.com/AlchemyCMS/alchemy-devise/pull/293
|
|
8
15
|
### Other Changes
|
|
9
|
-
*
|
|
16
|
+
* chore: Update specs for Alchemy 8.4/main by @tvdeyen in https://github.com/AlchemyCMS/alchemy-devise/pull/290
|
|
17
|
+
* fix: Wrap toolbar buttons in container by @tvdeyen in https://github.com/AlchemyCMS/alchemy-devise/pull/294
|
|
10
18
|
|
|
11
19
|
|
|
12
|
-
**Full Changelog**: https://github.com/AlchemyCMS/alchemy-devise/compare/v8.
|
|
20
|
+
**Full Changelog**: https://github.com/AlchemyCMS/alchemy-devise/compare/v8.3.0...v8.4.0
|
|
13
21
|
|
|
14
|
-
## 8.
|
|
22
|
+
## 8.3.0 (2026-06-25)
|
|
15
23
|
|
|
16
|
-
<!-- Release notes generated using configuration in .github/release.yml at
|
|
24
|
+
<!-- Release notes generated using configuration in .github/release.yml at main -->
|
|
17
25
|
|
|
18
26
|
## What's Changed
|
|
19
|
-
###
|
|
20
|
-
*
|
|
27
|
+
### New Features
|
|
28
|
+
* Update Alchemy to 8.3 by @tvdeyen in https://github.com/AlchemyCMS/alchemy-devise/pull/282
|
|
21
29
|
|
|
30
|
+
## New Contributors
|
|
31
|
+
* @sascha-karnatz made their first contribution in https://github.com/AlchemyCMS/alchemy-devise/pull/279
|
|
22
32
|
|
|
23
|
-
**Full Changelog**: https://github.com/AlchemyCMS/alchemy-devise/compare/v8.2.
|
|
33
|
+
**Full Changelog**: https://github.com/AlchemyCMS/alchemy-devise/compare/v8.2.2...v8.3.0
|
|
24
34
|
|
|
25
35
|
## 8.2.0 (2026-04-13)
|
|
26
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
body.user_sessions #errors,body.user_sessions .message.info,body.passwords #errors,body.passwords .message.info{border-color:rgba(0,0,0,0)}body.user_sessions #errors,body.passwords #errors{margin-left:157px}.logo-box{
|
|
1
|
+
body.signup,body.user_sessions,body.passwords{background-image:url("https://picsum.photos/1920/1200.webp?grayscale");background-size:cover;background-position:center}body.signup #errors,body.signup .message.info,body.user_sessions #errors,body.user_sessions .message.info,body.passwords #errors,body.passwords .message.info{border-color:rgba(0,0,0,0)}body.signup #errors,body.user_sessions #errors,body.passwords #errors{margin-left:157px}body.signup #main_content,body.user_sessions #main_content,body.passwords #main_content{padding-top:var(--spacing-2);display:flex;flex-direction:column;justify-content:center}body.signup::after,body.user_sessions::after,body.passwords::after{content:"Image from Unsplash";position:absolute;bottom:var(--spacing-2);right:var(--spacing-2);font-size:var(--font-size_small);color:var(--body-background-color)}.logo-box{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-4);background-color:hsl(from var(--body-background-color) h s l/50%);backdrop-filter:blur(5px);border-radius:var(--border-radius_large);box-shadow:var(--dialog-box-shadow);padding:var(--spacing-4);margin-bottom:var(--spacing-6);text-shadow:0 0 2px var(--body-background-color)}.logo-box svg{width:200px;height:auto}.login_signup_box{position:relative;max-width:450px;margin:auto;--form-right-column-width: 1.65fr}.no-js .login_signup_box{display:none}.login_signup_box alchemy-message{margin-bottom:1.5em}.login_signup_box .panel{--panel-background-color: var(--body-background-color);width:100%;max-width:100%;margin:0;box-shadow:var(--dialog-box-shadow);border-radius:var(--border-radius_large);border-color:rgba(0,0,0,0)}@media(max-width: 500px){.login_signup_box .input,.login_signup_box .submit{grid-template-columns:1fr}.login_signup_box .input label,.login_signup_box .submit label{text-align:start;margin-bottom:var(--spacing-1)}}.login_signup_box .submit>a{display:inline-flex;align-items:center;gap:var(--spacing-0);width:fit-content}.login_signup_box .submit>a:hover alchemy-icon{transform:translateX(-2px);transition:transform var(--transition-duration)}@media(min-width: 501px){.login_signup_box .submit{grid-template-columns:var(--form-left-column-width) minmax(254px, var(--form-right-column-width))}.login_signup_box .submit>label{text-align:start}.login_signup_box .submit>label input[type=checkbox]{margin:0 var(--spacing-0) 0 0}.login_signup_box .submit>a{grid-column:2;grid-row:1}}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
body.signup,
|
|
1
2
|
body.user_sessions,
|
|
2
3
|
body.passwords {
|
|
4
|
+
background-image: url("https://picsum.photos/1920/1200.webp?grayscale");
|
|
5
|
+
background-size: cover;
|
|
6
|
+
background-position: center;
|
|
7
|
+
|
|
3
8
|
#errors,
|
|
4
9
|
.message.info {
|
|
5
10
|
border-color: transparent;
|
|
@@ -8,11 +13,37 @@ body.passwords {
|
|
|
8
13
|
#errors {
|
|
9
14
|
margin-left: 157px;
|
|
10
15
|
}
|
|
16
|
+
|
|
17
|
+
#main_content {
|
|
18
|
+
padding-top: var(--spacing-2);
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
justify-content: center;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
&::after {
|
|
25
|
+
content: "Image from Unsplash";
|
|
26
|
+
position: absolute;
|
|
27
|
+
bottom: var(--spacing-2);
|
|
28
|
+
right: var(--spacing-2);
|
|
29
|
+
font-size: var(--font-size_small);
|
|
30
|
+
color: var(--body-background-color);
|
|
31
|
+
}
|
|
11
32
|
}
|
|
12
33
|
|
|
13
34
|
.logo-box {
|
|
14
|
-
|
|
15
|
-
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
align-items: center;
|
|
38
|
+
justify-content: center;
|
|
39
|
+
gap: var(--spacing-4);
|
|
40
|
+
background-color: hsl(from var(--body-background-color) h s l / 50%);
|
|
41
|
+
backdrop-filter: blur(5px);
|
|
42
|
+
border-radius: var(--border-radius_large);
|
|
43
|
+
box-shadow: var(--dialog-box-shadow);
|
|
44
|
+
padding: var(--spacing-4);
|
|
45
|
+
margin-bottom: var(--spacing-6);
|
|
46
|
+
text-shadow: 0 0 2px var(--body-background-color);
|
|
16
47
|
|
|
17
48
|
svg {
|
|
18
49
|
width: 200px;
|
|
@@ -21,48 +52,47 @@ body.passwords {
|
|
|
21
52
|
}
|
|
22
53
|
|
|
23
54
|
.login_signup_box {
|
|
24
|
-
position:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
alchemy-message {
|
|
30
|
-
width: 300px;
|
|
31
|
-
margin-left: var(--form-left-column-width);
|
|
32
|
-
}
|
|
55
|
+
position: relative;
|
|
56
|
+
max-width: 450px;
|
|
57
|
+
margin: auto;
|
|
58
|
+
--form-right-column-width: 1.65fr;
|
|
33
59
|
|
|
34
60
|
.no-js & {
|
|
35
61
|
display: none;
|
|
36
62
|
}
|
|
37
63
|
|
|
38
|
-
|
|
39
|
-
margin-
|
|
64
|
+
alchemy-message {
|
|
65
|
+
margin-bottom: 1.5em;
|
|
40
66
|
}
|
|
41
67
|
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
justify-content: end;
|
|
52
|
-
}
|
|
68
|
+
.panel {
|
|
69
|
+
--panel-background-color: var(--body-background-color);
|
|
70
|
+
width: 100%;
|
|
71
|
+
max-width: 100%;
|
|
72
|
+
margin: 0;
|
|
73
|
+
box-shadow: var(--dialog-box-shadow);
|
|
74
|
+
border-radius: var(--border-radius_large);
|
|
75
|
+
border-color: transparent;
|
|
76
|
+
}
|
|
53
77
|
|
|
54
|
-
|
|
55
|
-
|
|
78
|
+
@media (max-width: 500px) {
|
|
79
|
+
.input,
|
|
80
|
+
.submit {
|
|
81
|
+
grid-template-columns: 1fr;
|
|
56
82
|
|
|
57
|
-
|
|
58
|
-
|
|
83
|
+
label {
|
|
84
|
+
text-align: start;
|
|
85
|
+
margin-bottom: var(--spacing-1);
|
|
59
86
|
}
|
|
60
87
|
}
|
|
88
|
+
}
|
|
61
89
|
|
|
90
|
+
.submit {
|
|
62
91
|
> a {
|
|
63
92
|
display: inline-flex;
|
|
64
93
|
align-items: center;
|
|
65
94
|
gap: var(--spacing-0);
|
|
95
|
+
width: fit-content;
|
|
66
96
|
|
|
67
97
|
&:hover {
|
|
68
98
|
alchemy-icon {
|
|
@@ -72,4 +102,26 @@ body.passwords {
|
|
|
72
102
|
}
|
|
73
103
|
}
|
|
74
104
|
}
|
|
105
|
+
|
|
106
|
+
@media (min-width: 501px) {
|
|
107
|
+
.submit {
|
|
108
|
+
grid-template-columns: var(--form-left-column-width) minmax(
|
|
109
|
+
254px,
|
|
110
|
+
var(--form-right-column-width)
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
> label {
|
|
114
|
+
text-align: start;
|
|
115
|
+
|
|
116
|
+
input[type="checkbox"] {
|
|
117
|
+
margin: 0 var(--spacing-0) 0 0;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
> a {
|
|
122
|
+
grid-column: 2;
|
|
123
|
+
grid-row: 1;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
75
127
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@
|
|
1
|
+
@use "alchemy-devise/login";
|
|
@@ -69,7 +69,7 @@ module Alchemy
|
|
|
69
69
|
def set_roles
|
|
70
70
|
if can_update_role?
|
|
71
71
|
@user_roles = User::ROLES.map do |role|
|
|
72
|
-
[User.
|
|
72
|
+
[User.human_alchemy_rolename(role), role]
|
|
73
73
|
end
|
|
74
74
|
end
|
|
75
75
|
end
|
|
@@ -87,7 +87,7 @@ module Alchemy
|
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
def while_signup?
|
|
90
|
-
User.count == 0
|
|
90
|
+
@_while_signup ||= User.count == 0
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
def signup_admin_or_redirect
|
|
@@ -26,19 +26,19 @@ module Alchemy
|
|
|
26
26
|
private
|
|
27
27
|
|
|
28
28
|
def member?
|
|
29
|
-
@user.try(:
|
|
29
|
+
@user.try(:has_alchemy_role?, :member)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def author?
|
|
33
|
-
@user.try(:
|
|
33
|
+
@user.try(:has_alchemy_role?, :author)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def editor?
|
|
37
|
-
@user.try(:
|
|
37
|
+
@user.try(:has_alchemy_role?, :editor)
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def admin?
|
|
41
|
-
@user.try(:
|
|
41
|
+
@user.try(:has_alchemy_role?, :admin)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
end
|
data/app/models/alchemy/user.rb
CHANGED
|
@@ -21,18 +21,19 @@ module Alchemy
|
|
|
21
21
|
devise(*Alchemy::Devise.config.devise_modules)
|
|
22
22
|
|
|
23
23
|
include Alchemy::Taggable
|
|
24
|
+
include Alchemy::UserMethods
|
|
24
25
|
|
|
25
26
|
attr_accessor :send_credentials
|
|
26
27
|
|
|
27
28
|
has_many :folded_pages
|
|
28
29
|
|
|
29
30
|
validates :login, uniqueness: {case_sensitive: false}, presence: :login_required?
|
|
30
|
-
validates_presence_of :alchemy_roles
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
scope :admins, -> {
|
|
33
|
+
Alchemy::Deprecation.warn("#{name}.admins is deprecated. Please use #{name}.alchemy_admins instead.")
|
|
34
|
+
alchemy_admins
|
|
35
|
+
}
|
|
34
36
|
|
|
35
|
-
scope :admins, -> { where(arel_table[:alchemy_roles].matches("%admin%")) }
|
|
36
37
|
scope :logged_in, -> { where("last_request_at > ?", logged_in_timeout.seconds.ago) }
|
|
37
38
|
scope :logged_out, -> { where("last_request_at is NULL or last_request_at <= ?", logged_in_timeout.seconds.ago) }
|
|
38
39
|
|
|
@@ -61,9 +62,8 @@ module Alchemy
|
|
|
61
62
|
]
|
|
62
63
|
end
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
end
|
|
65
|
+
deprecate human_rolename: :human_alchemy_rolename, deprecator: Alchemy::Deprecation
|
|
66
|
+
alias_method :human_rolename, :human_alchemy_rolename
|
|
67
67
|
|
|
68
68
|
def logged_in_timeout
|
|
69
69
|
Alchemy.config.get(:auto_logout_time).minutes.to_i
|
|
@@ -73,53 +73,26 @@ module Alchemy
|
|
|
73
73
|
def role_symbols
|
|
74
74
|
alchemy_roles.map(&:to_sym)
|
|
75
75
|
end
|
|
76
|
+
deprecate :role_symbols, deprecator: Alchemy::Deprecation
|
|
76
77
|
|
|
77
78
|
def role
|
|
78
79
|
alchemy_roles.first
|
|
79
80
|
end
|
|
80
|
-
|
|
81
|
-
def alchemy_roles
|
|
82
|
-
read_attribute(:alchemy_roles).split(" ")
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def alchemy_roles=(roles_string)
|
|
86
|
-
if roles_string.is_a? Array
|
|
87
|
-
write_attribute(:alchemy_roles, roles_string.join(" "))
|
|
88
|
-
elsif roles_string.is_a? String
|
|
89
|
-
write_attribute(:alchemy_roles, roles_string)
|
|
90
|
-
end
|
|
91
|
-
end
|
|
81
|
+
deprecate :role, deprecator: Alchemy::Deprecation
|
|
92
82
|
|
|
93
83
|
def add_role(role)
|
|
94
84
|
self.alchemy_roles = alchemy_roles.push(role.to_s).uniq
|
|
95
85
|
end
|
|
86
|
+
deprecate add_role: :"alchemy_roles=", deprecator: Alchemy::Deprecation
|
|
96
87
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
has_role? "admin"
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
alias_method :admin?, :is_admin?
|
|
88
|
+
alias_method :is_admin?, :alchemy_admin?
|
|
89
|
+
deprecate is_admin?: :alchemy_admin?, deprecator: Alchemy::Deprecation
|
|
103
90
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
alchemy_roles.include? role.to_s
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# Calls unlock on all locked pages
|
|
110
|
-
def unlock_pages!
|
|
111
|
-
pages_locked_by_me.map(&:unlock!)
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
# Returns all pages locked by user.
|
|
115
|
-
#
|
|
116
|
-
# A page gets locked, if the user requests to edit the page.
|
|
117
|
-
#
|
|
118
|
-
def pages_locked_by_me
|
|
119
|
-
Page.locked_by(self).order(:updated_at)
|
|
120
|
-
end
|
|
91
|
+
alias_method :has_role?, :has_alchemy_role?
|
|
92
|
+
deprecate has_role?: :has_alchemy_role?, deprecator: Alchemy::Deprecation
|
|
121
93
|
|
|
122
|
-
alias_method :
|
|
94
|
+
alias_method :human_roles_string, :human_alchemy_roles
|
|
95
|
+
deprecate human_roles_string: :human_alchemy_roles, deprecator: Alchemy::Deprecation
|
|
123
96
|
|
|
124
97
|
# Returns the firstname and lastname as a string
|
|
125
98
|
#
|
|
@@ -160,11 +133,8 @@ module Alchemy
|
|
|
160
133
|
!logged_in?
|
|
161
134
|
end
|
|
162
135
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
self.class.human_rolename(role)
|
|
166
|
-
end.to_sentence
|
|
167
|
-
end
|
|
136
|
+
alias_method :pages_locked_by_me, :locked_pages
|
|
137
|
+
deprecate pages_locked_by_me: :locked_pages, deprecator: Alchemy::Deprecation
|
|
168
138
|
|
|
169
139
|
def store_request_time!
|
|
170
140
|
update_column(:last_request_at, Time.now)
|
|
@@ -173,7 +143,7 @@ module Alchemy
|
|
|
173
143
|
# Delivers a welcome mail depending from user's role.
|
|
174
144
|
#
|
|
175
145
|
def deliver_welcome_mail
|
|
176
|
-
if
|
|
146
|
+
if has_alchemy_role?("author") || has_alchemy_role?("editor") || has_alchemy_role?("admin")
|
|
177
147
|
Notifications.alchemy_user_created(self).deliver_later
|
|
178
148
|
else
|
|
179
149
|
Notifications.member_created(self).deliver_later
|
|
@@ -2,32 +2,32 @@
|
|
|
2
2
|
<%= stylesheet_link_tag "alchemy-devise" %>
|
|
3
3
|
<% end %>
|
|
4
4
|
|
|
5
|
+
<% content_for(:main_menu_style) { 'collapsed-menu' } %>
|
|
6
|
+
|
|
5
7
|
<div class="login_signup_box">
|
|
6
|
-
<%= render "alchemy/admin/user_sessions/logo" %>
|
|
7
|
-
<% if @user.errors.blank? %>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<strong><%= Alchemy.t('Password reset') %></strong>
|
|
11
|
-
</p>
|
|
12
|
-
<p><%= Alchemy.t('Please enter a new password') %></p>
|
|
13
|
-
<% end %>
|
|
14
|
-
<% else %>
|
|
15
|
-
<%= render "devise/shared/error_messages", resource: resource %>
|
|
16
|
-
<% end %>
|
|
17
|
-
<%= alchemy_form_for resource, as: resource_name, url: admin_update_password_path, method: 'patch' do |f| %>
|
|
18
|
-
<%= f.hidden_field :reset_password_token %>
|
|
19
|
-
<%= f.input :password, autofocus: true, label: Alchemy.t("New password"),
|
|
20
|
-
required: true, input_html: {autocomplete: "new-password"} %>
|
|
21
|
-
<%= f.input :password_confirmation, label: Alchemy.t("Confirm new password"),
|
|
22
|
-
required: true, input_html: {autocomplete: "new-password"} %>
|
|
23
|
-
<div class="submit">
|
|
24
|
-
<%= link_to alchemy.admin_login_path do %>
|
|
25
|
-
<%= render_icon("arrow-left-s", size: "1x") %>
|
|
26
|
-
<%= Alchemy.t(:login) %>
|
|
27
|
-
<% end %>
|
|
28
|
-
<button type="submit">
|
|
29
|
-
<%= Alchemy.t("Change password") %>
|
|
30
|
-
</button>
|
|
31
|
-
</div>
|
|
8
|
+
<%= render "alchemy/admin/user_sessions/logo" do %>
|
|
9
|
+
<% if @user.errors.blank? %>
|
|
10
|
+
<strong><%= Alchemy.t('Please enter a new password') %></strong>
|
|
11
|
+
<% end %>
|
|
32
12
|
<% end %>
|
|
13
|
+
|
|
14
|
+
<div class="panel">
|
|
15
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
|
16
|
+
<%= alchemy_form_for resource, as: resource_name, url: admin_update_password_path, method: 'patch' do |f| %>
|
|
17
|
+
<%= f.hidden_field :reset_password_token %>
|
|
18
|
+
<%= f.input :password, autofocus: true, label: Alchemy.t("New password"),
|
|
19
|
+
required: true, input_html: {autocomplete: "new-password"} %>
|
|
20
|
+
<%= f.input :password_confirmation, label: Alchemy.t("Confirm new password"),
|
|
21
|
+
required: true, input_html: {autocomplete: "new-password"} %>
|
|
22
|
+
<div class="submit">
|
|
23
|
+
<%= link_to alchemy.admin_login_path do %>
|
|
24
|
+
<%= render_icon("arrow-left-s", size: "1x") %>
|
|
25
|
+
<%= Alchemy.t(:login) %>
|
|
26
|
+
<% end %>
|
|
27
|
+
<button type="submit">
|
|
28
|
+
<%= Alchemy.t("Change password") %>
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
<% end %>
|
|
32
|
+
</div>
|
|
33
33
|
</div>
|
|
@@ -2,34 +2,35 @@
|
|
|
2
2
|
<%= stylesheet_link_tag "alchemy-devise" %>
|
|
3
3
|
<% end %>
|
|
4
4
|
|
|
5
|
+
<% content_for(:main_menu_style) { 'collapsed-menu' } %>
|
|
6
|
+
|
|
5
7
|
<div class="login_signup_box">
|
|
6
|
-
<%= render "alchemy/admin/user_sessions/logo" %>
|
|
7
|
-
<% if @user.errors.blank? %>
|
|
8
|
-
<%= render_message do %>
|
|
9
|
-
<p>
|
|
8
|
+
<%= render "alchemy/admin/user_sessions/logo" do %>
|
|
9
|
+
<% if @user.errors.blank? %>
|
|
10
10
|
<strong><%= Alchemy.t('Password reset') %></strong>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
<% end %>
|
|
14
|
-
<% else %>
|
|
15
|
-
<%= render "devise/shared/error_messages", resource: resource %>
|
|
16
|
-
<% end %>
|
|
17
|
-
<%= alchemy_form_for :user, url: admin_reset_password_path, html: {method: 'post'} do |f| %>
|
|
18
|
-
<%= f.input :email,
|
|
19
|
-
autofocus: true,
|
|
20
|
-
required: true,
|
|
21
|
-
input_html: {
|
|
22
|
-
autocomplete: "email",
|
|
23
|
-
value: params[:email]
|
|
24
|
-
} %>
|
|
25
|
-
<div class="submit">
|
|
26
|
-
<%= link_to alchemy.admin_login_path do %>
|
|
27
|
-
<%= render_icon("arrow-left-s", size: "1x") %>
|
|
28
|
-
<%= Alchemy.t(:login) %>
|
|
29
|
-
<% end %>
|
|
30
|
-
<button type="submit">
|
|
31
|
-
<%= Alchemy.t("Send reset instructions") %>
|
|
32
|
-
</button>
|
|
33
|
-
</div>
|
|
11
|
+
<strong><%= Alchemy.t('Please enter your email address') %></strong>
|
|
12
|
+
<% end %>
|
|
34
13
|
<% end %>
|
|
14
|
+
|
|
15
|
+
<div class="panel">
|
|
16
|
+
<%= render "devise/shared/error_messages", resource: resource %>
|
|
17
|
+
<%= alchemy_form_for :user, url: admin_reset_password_path, html: {method: 'post'} do |f| %>
|
|
18
|
+
<%= f.input :email,
|
|
19
|
+
autofocus: true,
|
|
20
|
+
required: true,
|
|
21
|
+
input_html: {
|
|
22
|
+
autocomplete: "email",
|
|
23
|
+
value: params[:email]
|
|
24
|
+
} %>
|
|
25
|
+
<div class="submit">
|
|
26
|
+
<%= link_to alchemy.admin_login_path do %>
|
|
27
|
+
<%= render_icon("arrow-left-s", size: "1x") %>
|
|
28
|
+
<%= Alchemy.t(:login) %>
|
|
29
|
+
<% end %>
|
|
30
|
+
<button type="submit">
|
|
31
|
+
<%= Alchemy.t("Send reset instructions") %>
|
|
32
|
+
</button>
|
|
33
|
+
</div>
|
|
34
|
+
<% end %>
|
|
35
|
+
</div>
|
|
35
36
|
</div>
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
fill="currentColor"
|
|
14
14
|
d="M102.705 26.102h8.626l9.245 33.793h-7.549l-1.541-5.856h-9.448l-1.541 5.856h-7.189l9.397-33.793zm.411 23.008h7.291c-1.282-5.857-2.925-12.841-3.594-16.487-.719 3.647-2.362 10.63-3.697 16.487zm27.472 10.786h-6.931V22.969l6.931-1.026v37.953zm22.187-1.748c-.977.409-3.545 2.364-7.549 2.364-6.883 0-10.682-4.314-10.682-13.405 0-9.554 3.953-14.176 11.143-14.176 2.878 0 5.239.719 6.163 1.079l-.822 5.083c-.666-.256-2.517-.822-4.365-.822-3.388 0-4.981 2.62-4.981 8.579 0 6.061 1.747 8.267 4.775 8.267 2.108 0 4.008-1.128 4.726-1.386l1.592 4.417zm2.671-35.179l6.931-1.026v14.943h.105c.717-.667 3.079-3.954 7.291-3.954 4.826 0 6.728 2.979 6.728 9.193v17.771h-6.934V43.819c0-3.801-.616-4.879-2.721-4.879-2.107 0-3.853 2.157-4.47 2.876v18.079h-6.931V22.969zm44.73 35.026c-.771.514-3.956 2.518-9.038 2.518-5.957 0-10.785-3.852-10.785-13.097 0-9.811 4.775-14.484 10.63-14.484 5.854 0 9.963 3.646 9.963 12.273 0 1.851-.257 3.339-.309 3.597h-13.401c.05 4.571 2.311 6.469 5.235 6.469 2.773 0 5.086-1.231 6.319-1.795l1.386 4.519zm-12.941-13.509h7.034c0-5.237-1.437-6.624-3.338-6.624-1.798 0-3.646 1.643-3.696 6.624zm17.82-10.989h6.107l.31 3.543c.772-.925 2.722-4.109 6.624-4.109 2.98 0 4.828 1.027 5.598 4.057.874-1.181 3.03-4.057 6.728-4.057 4.468 0 6.37 2.517 6.37 9.141v17.823h-6.883V42.637c0-2.311-.358-3.697-2.158-3.697-1.797 0-3.183 2.054-3.543 2.876v18.079h-6.625V42.637c0-2.311-.358-3.697-2.157-3.697-1.796 0-3.131 2.003-3.542 2.876v18.079h-6.828V33.497zm56.744 0l-8.679 27.887c-2.156 6.934-6.213 8.886-8.37 10.067-.718-.926-2.414-3.287-3.081-4.213.771-.668 4.467-2.566 5.546-6.778l-8.318-26.963h7.239c.771 3.132 3.545 14.688 4.314 19.002.821-4.417 3.545-15.87 4.367-19.002h6.982z"
|
|
15
15
|
/>
|
|
16
|
-
<g>
|
|
16
|
+
<g fill="currentColor">
|
|
17
17
|
<path
|
|
18
|
-
fill="currentColor"
|
|
19
18
|
d="M193.986 68.011c.319 0 .667.193 1.031.578.897.95 1.506 1.125 2.353.546.367-.254.548-.633.508-1.05-.054-.799-.66-1.456-1.799-1.957-.818-.364-1.438-.541-1.896-.541-2.436.013-4.74 1.736-6.854 5.116-1.807 2.889-2.722 5.389-2.722 7.435 0 1.336.326 2.474.969 3.379.796 1.128 1.983 1.701 3.526 1.701.029 0 .213-.016.555-.054.268-.028.427-.045.47-.046.306 0 .867-.139 2.703-1.14.226-.117.704-.468 2.439-2.166 1.932-1.896 2.285-2.549 2.366-2.884.084-.275.01-.583-.22-.921-.238-.344-.523-.518-.838-.518a.786.786 0 0 0-.708.429c-.872 1.35-1.932 2.444-3.146 3.266-1.295.868-2.615 1.308-3.923 1.308-.778 0-1.671-.234-1.671-2.074 0-1.427.742-3.47 2.211-6.08 1.621-2.872 3.183-4.327 4.646-4.327zm30.25 10.553c-.354 0-.695.247-1.103.798-.301.408-.535.409-.654.408-.259-.01-1.135-.388-1.441-4.977l-.305-4.414c-.25-1.795-.915-2.704-1.979-2.704-.68 0-1.78.545-4.245 4.804a46.07 46.07 0 0 1-2.457 3.695c-.936 1.256-1.511 1.87-1.856 2.171-.082-.436-.124-.979-.124-1.635 0-.533.027-1.253.081-2.143.055-.995.089-1.633.101-1.925.039-2.004-.251-3.293-.885-3.941a1.569 1.569 0 0 0-1.157-.483c-1.114 0-2.453 1.26-4.214 3.968-.44.683-1.144 1.88-2.093 3.565.149-2.311.529-4.59 1.141-6.795.071-.267.054-.669-.433-1.089-.33-.287-.703-.436-1.107-.436-.863 0-1.277 1.173-1.539 2.19-.313 1.16-.526 2.592-.635 4.245-.119 1.754-.181 3.891-.181 6.36 0 .357.075.868.233 1.577.203.807.5 1.631 1.17 1.631.813 0 1.32-.423 1.381-1.157.113-1.165 1.095-3.422 2.918-6.71 1.54-2.804 2.334-3.953 2.701-4.42 0 .089 0 .194-.005.32-.15 3.265-.211 5.245-.182 5.886.105 2.516.823 3.792 2.139 3.792 1.21 0 2.685-1.261 4.636-3.968.255-.355 2.324-3.588 3.537-5.488.234-.37.414-.648.545-.854.012.086.021.184.031.293.052.55.064 1.329.038 2.328v2.002c.01 1.115.313 2.354.903 3.685.812 1.851 1.907 2.786 3.252 2.786.459 0 .972-.164 1.575-.502.819-.475 1.234-1.083 1.234-1.804.001-.652-.392-1.059-1.021-1.059zm6.628-4.902c-2.19 0-2.468-.365-2.475-.365 0-.874.821-2.04 2.372-3.37 1.809-1.556 2.828-1.882 3.366-1.882.036 0 .073.003.123.006.072.004.298.046.826.328.721.386.872.415 1.009.415.727 0 1.163-.494 1.163-1.324 0-.631-.425-1.187-1.268-1.647-.651-.35-1.201-.517-1.684-.517-1.572 0-3.401 1.039-5.592 3.175-2.195 2.138-3.262 3.892-3.262 5.361 0 .738.509 1.313 1.518 1.711.65.258 1.33.402 2.023.432l3.86.141c.473.023.891.157 1.28.407.556.367.619.737.619.983 0 .86-1.161 1.629-2.133 2.122-1.358.688-2.57 1.035-3.598 1.035-.625 0-.625-.247-.625-.444 0-.104.017-.197.054-.283.126-.3.213-.694.266-1.218l.035-.339-.312-.132c-.656-.279-1.311.032-1.813.841-.316.495-.47.93-.47 1.33 0 .904.4 1.646 1.192 2.199a3.557 3.557 0 0 0 2.134.712c1.598 0 3.218-.569 4.811-1.693 1.794-1.263 2.701-2.733 2.701-4.371.002-2.398-2.057-3.613-6.12-3.613z"
|
|
20
19
|
/>
|
|
20
|
+
<text x="94" y="83"><%= Alchemy.version %></text>
|
|
21
21
|
</g>
|
|
22
22
|
<g fill-rule="evenodd" clip-rule="evenodd" fill="currentColor">
|
|
23
23
|
<path
|
|
@@ -31,5 +31,5 @@
|
|
|
31
31
|
/>
|
|
32
32
|
</g>
|
|
33
33
|
</svg>
|
|
34
|
-
|
|
34
|
+
<%= yield %>
|
|
35
35
|
</div>
|
|
@@ -2,31 +2,32 @@
|
|
|
2
2
|
<%= stylesheet_link_tag "alchemy-devise" %>
|
|
3
3
|
<% end %>
|
|
4
4
|
|
|
5
|
+
<% content_for(:main_menu_style) { 'collapsed-menu' } %>
|
|
6
|
+
|
|
5
7
|
<div class="login_signup_box">
|
|
6
|
-
<%= render "alchemy/admin/user_sessions/logo" %>
|
|
7
|
-
|
|
8
|
-
<p>
|
|
9
|
-
<strong><%= Alchemy.t('modules.user_sessions') %></strong>
|
|
10
|
-
</p>
|
|
11
|
-
<p><%= Alchemy.t('welcome_please_identify_notice') %></p>
|
|
8
|
+
<%= render "alchemy/admin/user_sessions/logo" do %>
|
|
9
|
+
<strong><%= Alchemy.t('welcome_please_identify_notice') %></strong>
|
|
12
10
|
<% end %>
|
|
13
|
-
<%= alchemy_form_for :user, url: {action: 'create'}, id: 'login', data: { turbo: false } do |f| %>
|
|
14
|
-
<%= f.input Devise.authentication_keys.first, autofocus: true, required: true,
|
|
15
|
-
input_html: {autocomplete: Devise.authentication_keys.first == :email ? "email" : "username"} %>
|
|
16
|
-
<%= f.input :password, required: true, input_html: {autocomplete: "current-password"} %>
|
|
17
|
-
<% if devise_mapping.rememberable? %>
|
|
18
|
-
<div class="input">
|
|
19
|
-
<span class="control-label"> </span>
|
|
20
11
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
<div class="panel">
|
|
13
|
+
<%= alchemy_form_for :user, url: {action: 'create'}, id: 'login', data: { turbo: false } do |f| %>
|
|
14
|
+
<%= f.input Devise.authentication_keys.first, autofocus: true, required: true,
|
|
15
|
+
input_html: {autocomplete: Devise.authentication_keys.first == :email ? "email" : "username"} %>
|
|
16
|
+
<%= f.input :password, required: true, input_html: {autocomplete: "current-password"} %>
|
|
17
|
+
<% if devise_mapping.rememberable? %>
|
|
18
|
+
<div class="input">
|
|
19
|
+
<span class="control-label"> </span>
|
|
20
|
+
|
|
21
|
+
<%= f.label :remember_me, class: "checkbox" do %>
|
|
22
|
+
<%= f.check_box :remember_me, checked: true %>
|
|
23
|
+
<%= Alchemy.t(:remember_me, scope: 'admin.login', days: Devise.remember_for.in_days.to_i) %>
|
|
24
|
+
<% end %>
|
|
25
|
+
</div>
|
|
26
|
+
<% end %>
|
|
27
|
+
<div class="submit">
|
|
28
|
+
<%= link_to Alchemy.t('Forgot your password?'), admin_new_password_path %>
|
|
29
|
+
<button type="submit"><%= Alchemy.t(:login) %></button>
|
|
25
30
|
</div>
|
|
26
31
|
<% end %>
|
|
27
|
-
|
|
28
|
-
<%= link_to Alchemy.t('Forgot your password?'), admin_new_password_path %>
|
|
29
|
-
<button type="submit"><%= Alchemy.t(:login) %></button>
|
|
30
|
-
</div>
|
|
31
|
-
<% end %>
|
|
32
|
+
</div>
|
|
32
33
|
</div>
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
<%= f.input :firstname, input_html: {autocomplete: "given-name"} %>
|
|
2
|
-
<%= f.input :lastname, input_html: {autocomplete: "family-name"} %>
|
|
3
|
-
<%= f.input :login, autofocus: true, required: f.object.login_required?, input_html: {autocomplete: "username"} %>
|
|
4
|
-
<%= f.input :email, required: f.object.email_required?, input_html: {autocomplete: "email"} %>
|
|
1
|
+
<%= f.input :firstname, input_html: {autocomplete: while_signup? ? "given-name" : "off"} %>
|
|
2
|
+
<%= f.input :lastname, input_html: {autocomplete: while_signup? ? "family-name" : "off"} %>
|
|
3
|
+
<%= f.input :login, autofocus: true, required: f.object.login_required?, input_html: {autocomplete: while_signup? ? "username" : "off"} %>
|
|
4
|
+
<%= f.input :email, required: f.object.email_required?, input_html: {autocomplete: while_signup? ? "email" : "off"} %>
|
|
5
5
|
<% if Alchemy::I18n.available_locales.many? %>
|
|
6
6
|
<div class="input select">
|
|
7
7
|
<%= f.label(:language) %>
|
|
8
8
|
<%= render Alchemy::Admin::LocaleSelect.new(f.field_name(:language), auto_submit: false) %>
|
|
9
9
|
</div>
|
|
10
10
|
<% end %>
|
|
11
|
-
<%= f.input :password, required: while_signup?, input_html: {autocomplete: "new-password"} %>
|
|
12
|
-
<%= f.input :password_confirmation, required: while_signup?, input_html: {autocomplete: "new-password"} %>
|
|
11
|
+
<%= f.input :password, required: while_signup?, input_html: {autocomplete: while_signup? ? "new-password" : "off"} %>
|
|
12
|
+
<%= f.input :password_confirmation, required: while_signup?, input_html: {autocomplete: while_signup? ? "new-password" : "off"} %>
|
|
13
13
|
<%= f.input :timezone,
|
|
14
14
|
collection: ActiveSupport::TimeZone.all, label_method: :to_s, value_method: :name,
|
|
15
|
+
include_blank: Alchemy.t("Default"),
|
|
15
16
|
input_html: {
|
|
16
17
|
is: "alchemy-select",
|
|
17
18
|
data: {allow_clear: true}
|
|
18
|
-
} %>
|
|
19
|
+
}, hint: Alchemy.t("admin.users.preferred_timezone", server_timezone: Time.zone) %>
|
|
19
20
|
<% if local_assigns[:user_roles] && can_update_role? %>
|
|
20
21
|
<%= f.input :alchemy_roles,
|
|
21
22
|
collection: user_roles,
|
|
@@ -35,8 +36,11 @@
|
|
|
35
36
|
object: f.object %>
|
|
36
37
|
</div>
|
|
37
38
|
<% end %>
|
|
38
|
-
|
|
39
|
-
<
|
|
39
|
+
<div class="submit">
|
|
40
|
+
<label class="checkbox">
|
|
41
|
+
<%= f.check_box :send_credentials %>
|
|
42
|
+
<%= Alchemy.config.user_class.human_attribute_name :send_credentials %>
|
|
43
|
+
</label>
|
|
40
44
|
<button type="submit">
|
|
41
45
|
<%= Alchemy.t(:save) %>
|
|
42
46
|
</button>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
alchemy.edit_admin_user_path(user), {
|
|
9
9
|
title: Alchemy.t(:edit_user),
|
|
10
10
|
overflow: true,
|
|
11
|
-
size: "
|
|
11
|
+
size: "460x530"
|
|
12
12
|
},
|
|
13
13
|
title: Alchemy.t(:edit_user) %>
|
|
14
14
|
<% else %>
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
<%= user.last_sign_in_at.present? ? l(user.last_sign_in_at, format: :"alchemy.default") : Alchemy.t(:unknown) %>
|
|
26
26
|
<% end %>
|
|
27
27
|
<% table.column :role, header: Alchemy::User.human_attribute_name(:alchemy_roles) do |user| %>
|
|
28
|
-
<%= user.
|
|
28
|
+
<%= user.human_alchemy_roles %>
|
|
29
29
|
<% end %>
|
|
30
30
|
<% table.delete_button tooltip: Alchemy.t(:delete_user), confirm_message: Alchemy.t(:confirm_to_delete_user) %>
|
|
31
|
-
<% table.edit_button tooltip: Alchemy.t(:edit_user), dialog_size: "
|
|
31
|
+
<% table.edit_button tooltip: Alchemy.t(:edit_user), dialog_size: "460x530" %>
|
|
32
32
|
<% end %>
|
|
@@ -3,12 +3,19 @@
|
|
|
3
3
|
<%= render "fields", f: f, user_roles: @user_roles %>
|
|
4
4
|
<% end %>
|
|
5
5
|
<% else %>
|
|
6
|
-
|
|
7
|
-
<
|
|
8
|
-
<%=
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
<% content_for :toolbar do %>
|
|
7
|
+
<div class="toolbar_buttons">
|
|
8
|
+
<sl-tooltip content="<%= Alchemy.t(:back) %>">
|
|
9
|
+
<%= render Alchemy::Admin::ToolbarButton.new(
|
|
10
|
+
label: Alchemy.t(:back),
|
|
11
|
+
primary: true,
|
|
12
|
+
icon: "arrow-left-s",
|
|
13
|
+
url: request.referer || alchemy.admin_dashboard_path,
|
|
14
|
+
skip_permission_check: true,
|
|
15
|
+
dialog: false
|
|
16
|
+
) %>
|
|
17
|
+
</sl-tooltip>
|
|
18
|
+
</div>
|
|
12
19
|
<% end %>
|
|
13
20
|
|
|
14
21
|
<div class="panel">
|
|
@@ -3,19 +3,21 @@
|
|
|
3
3
|
<% end %>
|
|
4
4
|
|
|
5
5
|
<%= content_for :toolbar do %>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
<div class="toolbar_buttons">
|
|
7
|
+
<%= render Alchemy::Admin::ToolbarButton.new(
|
|
8
|
+
icon: :plus,
|
|
9
|
+
label: Alchemy.t(:create_user),
|
|
10
|
+
primary: true,
|
|
11
|
+
url: alchemy.new_admin_user_path,
|
|
12
|
+
hotkey: 'alt+n',
|
|
13
|
+
tooltip_placement: "top-start",
|
|
14
|
+
dialog_options: {
|
|
15
|
+
title: Alchemy.t(:create_user),
|
|
16
|
+
size: "460x530"
|
|
17
|
+
},
|
|
18
|
+
if_permitted_to: [:create, Alchemy::User]
|
|
19
|
+
) %>
|
|
20
|
+
</div>
|
|
19
21
|
<%= render "alchemy/admin/partials/search_form" %>
|
|
20
22
|
<% end %>
|
|
21
23
|
|
|
@@ -2,15 +2,19 @@
|
|
|
2
2
|
<%= stylesheet_link_tag "alchemy-devise" %>
|
|
3
3
|
<% end %>
|
|
4
4
|
|
|
5
|
+
<% content_for(:main_menu_style) { 'collapsed-menu' } %>
|
|
6
|
+
|
|
5
7
|
<div class="login_signup_box">
|
|
6
|
-
<%= render "alchemy/admin/user_sessions/logo" %>
|
|
7
|
-
<%= render_message do %>
|
|
8
|
+
<%= render "alchemy/admin/user_sessions/logo" do %>
|
|
8
9
|
<p>
|
|
9
10
|
<strong><%= Alchemy.t('Welcome to Alchemy') %></strong>
|
|
10
11
|
</p>
|
|
11
12
|
<p><%= Alchemy.t("Please Signup") %></p>
|
|
12
13
|
<% end %>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
|
|
15
|
+
<div class="panel">
|
|
16
|
+
<%= alchemy_form_for [:admin, @user] do |f| %>
|
|
17
|
+
<%= render 'fields', f: f %>
|
|
18
|
+
<% end %>
|
|
19
|
+
</div>
|
|
16
20
|
</div>
|
data/config/locales/de.yml
CHANGED
data/config/locales/en.yml
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: alchemy-devise
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 8.
|
|
4
|
+
version: 8.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Thomas von Deyen
|
|
@@ -15,7 +15,7 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 8.
|
|
18
|
+
version: 8.4.0.a
|
|
19
19
|
- - "<"
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
21
|
version: '9.0'
|
|
@@ -25,7 +25,7 @@ dependencies:
|
|
|
25
25
|
requirements:
|
|
26
26
|
- - ">="
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: 8.
|
|
28
|
+
version: 8.4.0.a
|
|
29
29
|
- - "<"
|
|
30
30
|
- !ruby/object:Gem::Version
|
|
31
31
|
version: '9.0'
|
|
@@ -266,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
266
266
|
- !ruby/object:Gem::Version
|
|
267
267
|
version: '0'
|
|
268
268
|
requirements: []
|
|
269
|
-
rubygems_version: 4.0.
|
|
269
|
+
rubygems_version: 4.0.16
|
|
270
270
|
specification_version: 4
|
|
271
271
|
summary: Devise based user authentication for AlchemyCMS.
|
|
272
272
|
test_files: []
|