lotus_admin 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +63 -0
- data/Rakefile +20 -0
- data/app/assets/config/lotus_admin_manifest.js +2 -0
- data/app/assets/images/lotus_admin/profile-menu.png +0 -0
- data/app/assets/javascripts/lotus_admin/application.js +5 -0
- data/app/assets/stylesheets/lotus_admin/application.css.scss +9 -0
- data/app/assets/stylesheets/lotus_admin/components/_alerts.scss +5 -0
- data/app/assets/stylesheets/lotus_admin/components/_all.scss +4 -0
- data/app/assets/stylesheets/lotus_admin/components/_devise.scss +3 -0
- data/app/assets/stylesheets/lotus_admin/components/_forms.scss +7 -0
- data/app/assets/stylesheets/lotus_admin/components/_tables.scss +27 -0
- data/app/controllers/concerns/lotus_admin/devise_controllers.rb +7 -0
- data/app/controllers/concerns/lotus_admin/exposure.rb +27 -0
- data/app/controllers/concerns/lotus_admin/permitted_params.rb +18 -0
- data/app/controllers/lotus_admin/application_controller.rb +20 -0
- data/app/controllers/lotus_admin/authenticated_controller.rb +20 -0
- data/app/controllers/lotus_admin/confirmations_controller.rb +3 -0
- data/app/controllers/lotus_admin/dashboard_controller.rb +5 -0
- data/app/controllers/lotus_admin/passwords_controller.rb +3 -0
- data/app/controllers/lotus_admin/profiles_controller.rb +20 -0
- data/app/controllers/lotus_admin/sessions_controller.rb +3 -0
- data/app/controllers/lotus_admin/users_controller.rb +45 -0
- data/app/helpers/lotus_admin/application_helper.rb +18 -0
- data/app/helpers/lotus_admin/form_helpers.rb +25 -0
- data/app/helpers/lotus_admin/link_helpers.rb +27 -0
- data/app/helpers/lotus_admin/pagination_helpers.rb +7 -0
- data/app/helpers/lotus_admin/panel_helpers.rb +24 -0
- data/app/helpers/lotus_admin/sidebar_helpers.rb +25 -0
- data/app/jobs/lotus_admin/application_job.rb +4 -0
- data/app/mailers/lotus_admin/application_mailer.rb +6 -0
- data/app/mailers/lotus_admin/user_mailer.rb +10 -0
- data/app/models/lotus_admin/application_record.rb +5 -0
- data/app/models/lotus_admin/user.rb +17 -0
- data/app/views/administrators/_links.html.haml +20 -0
- data/app/views/administrators/confirmations/new.html.haml +13 -0
- data/app/views/administrators/passwords/edit.html.haml +15 -0
- data/app/views/administrators/passwords/new.html.haml +11 -0
- data/app/views/administrators/sessions/new.html.haml +11 -0
- data/app/views/kaminari/lotus_admin/_first_page.html.haml +2 -0
- data/app/views/kaminari/lotus_admin/_gap.html.haml +1 -0
- data/app/views/kaminari/lotus_admin/_last_page.html.haml +2 -0
- data/app/views/kaminari/lotus_admin/_next_page.html.haml +2 -0
- data/app/views/kaminari/lotus_admin/_page.html.haml +2 -0
- data/app/views/kaminari/lotus_admin/_paginator.html.haml +12 -0
- data/app/views/kaminari/lotus_admin/_prev_page.html.haml +2 -0
- data/app/views/layouts/lotus_admin/_devise_footer.html.haml +0 -0
- data/app/views/layouts/lotus_admin/_favicons.html.haml +0 -0
- data/app/views/layouts/lotus_admin/_footer.html.haml +2 -0
- data/app/views/layouts/lotus_admin/_footer_scripts.html.haml +2 -0
- data/app/views/layouts/lotus_admin/_header.html.haml +31 -0
- data/app/views/layouts/lotus_admin/_header_dropdown_items.html.haml +0 -0
- data/app/views/layouts/lotus_admin/_html_head.html.haml +9 -0
- data/app/views/layouts/lotus_admin/_javascripts.html.haml +1 -0
- data/app/views/layouts/lotus_admin/_sidebar.html.haml +22 -0
- data/app/views/layouts/lotus_admin/_sidebar_items.html.haml +9 -0
- data/app/views/layouts/lotus_admin/_stylesheets.html.haml +5 -0
- data/app/views/layouts/lotus_admin/application.html.haml +22 -0
- data/app/views/layouts/lotus_admin/devise.html.haml +19 -0
- data/app/views/layouts/lotus_admin/mailer.html.haml +10 -0
- data/app/views/layouts/lotus_admin/mailer.text.erb +4 -0
- data/app/views/lotus_admin/dashboard/show.html.haml +1 -0
- data/app/views/lotus_admin/profiles/edit.html.haml +26 -0
- data/app/views/lotus_admin/shared/_collection_pagination.html.haml +7 -0
- data/app/views/lotus_admin/user_mailer/invited.html.haml +8 -0
- data/app/views/lotus_admin/user_mailer/invited.text.erb +5 -0
- data/app/views/lotus_admin/users/_form.html.haml +10 -0
- data/app/views/lotus_admin/users/edit.html.haml +12 -0
- data/app/views/lotus_admin/users/index.html.haml +30 -0
- data/app/views/lotus_admin/users/new.html.haml +9 -0
- data/app/views/lotus_admin/users/show.html.haml +24 -0
- data/config/initializers/devise.rb +280 -0
- data/config/initializers/simple_form.rb +170 -0
- data/config/initializers/simple_form_bootstrap.rb +155 -0
- data/config/initializers/simple_form_material.rb +35 -0
- data/config/locales/dates.en.yml +11 -0
- data/config/locales/devise.en.yml +64 -0
- data/config/locales/mailers.en.yml +5 -0
- data/config/locales/page_titles.en.yml +30 -0
- data/config/locales/simple_form.en.yml +31 -0
- data/config/locales/users.en.yml +29 -0
- data/config/routes.rb +8 -0
- data/db/migrate/20180228124526_devise_create_lotus_admin_users.rb +46 -0
- data/db/migrate/20180228210938_add_timezone_to_users.rb +5 -0
- data/lib/lotus_admin.rb +17 -0
- data/lib/lotus_admin/engine.rb +19 -0
- data/lib/lotus_admin/version.rb +3 -0
- data/lib/tasks/lotus_admin_tasks.rake +6 -0
- data/lib/templates/erb/scaffold/_form.html.erb +14 -0
- metadata +371 -0
@@ -0,0 +1,155 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# Use this setup block to configure all options available in SimpleForm.
|
3
|
+
SimpleForm.setup do |config|
|
4
|
+
config.error_notification_class = 'alert alert-danger'
|
5
|
+
config.button_class = 'btn btn-default'
|
6
|
+
config.boolean_label_class = nil
|
7
|
+
|
8
|
+
config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
9
|
+
b.use :html5
|
10
|
+
b.use :placeholder
|
11
|
+
b.optional :maxlength
|
12
|
+
b.optional :minlength
|
13
|
+
b.optional :pattern
|
14
|
+
b.optional :min_max
|
15
|
+
b.optional :readonly
|
16
|
+
b.use :label, class: 'control-label'
|
17
|
+
|
18
|
+
b.use :input, class: 'form-control'
|
19
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
20
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
21
|
+
end
|
22
|
+
|
23
|
+
config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
24
|
+
b.use :html5
|
25
|
+
b.use :placeholder
|
26
|
+
b.optional :maxlength
|
27
|
+
b.optional :minlength
|
28
|
+
b.optional :readonly
|
29
|
+
b.use :label, class: 'control-label'
|
30
|
+
|
31
|
+
b.use :input
|
32
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
33
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
34
|
+
end
|
35
|
+
|
36
|
+
config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
37
|
+
b.use :html5
|
38
|
+
b.optional :readonly
|
39
|
+
|
40
|
+
b.wrapper tag: 'div', class: 'checkbox' do |ba|
|
41
|
+
ba.use :label_input
|
42
|
+
end
|
43
|
+
|
44
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
45
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
46
|
+
end
|
47
|
+
|
48
|
+
config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
49
|
+
b.use :html5
|
50
|
+
b.optional :readonly
|
51
|
+
b.use :label, class: 'control-label'
|
52
|
+
b.use :input
|
53
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
54
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
55
|
+
end
|
56
|
+
|
57
|
+
config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
58
|
+
b.use :html5
|
59
|
+
b.use :placeholder
|
60
|
+
b.optional :maxlength
|
61
|
+
b.optional :minlength
|
62
|
+
b.optional :pattern
|
63
|
+
b.optional :min_max
|
64
|
+
b.optional :readonly
|
65
|
+
b.use :label, class: 'col-sm-3 control-label'
|
66
|
+
|
67
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
68
|
+
ba.use :input, class: 'form-control'
|
69
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
70
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
75
|
+
b.use :html5
|
76
|
+
b.use :placeholder
|
77
|
+
b.optional :maxlength
|
78
|
+
b.optional :minlength
|
79
|
+
b.optional :readonly
|
80
|
+
b.use :label, class: 'col-sm-3 control-label'
|
81
|
+
|
82
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
83
|
+
ba.use :input
|
84
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
85
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
90
|
+
b.use :html5
|
91
|
+
b.optional :readonly
|
92
|
+
|
93
|
+
b.wrapper tag: 'div', class: 'col-sm-offset-3 col-sm-9' do |wr|
|
94
|
+
wr.wrapper tag: 'div', class: 'checkbox' do |ba|
|
95
|
+
ba.use :label_input
|
96
|
+
end
|
97
|
+
|
98
|
+
wr.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
99
|
+
wr.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
104
|
+
b.use :html5
|
105
|
+
b.optional :readonly
|
106
|
+
|
107
|
+
b.use :label, class: 'col-sm-3 control-label'
|
108
|
+
|
109
|
+
b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
|
110
|
+
ba.use :input
|
111
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
112
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
117
|
+
b.use :html5
|
118
|
+
b.use :placeholder
|
119
|
+
b.optional :maxlength
|
120
|
+
b.optional :minlength
|
121
|
+
b.optional :pattern
|
122
|
+
b.optional :min_max
|
123
|
+
b.optional :readonly
|
124
|
+
b.use :label, class: 'sr-only'
|
125
|
+
|
126
|
+
b.use :input, class: 'form-control'
|
127
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
128
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
129
|
+
end
|
130
|
+
|
131
|
+
config.wrappers :multi_select, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
132
|
+
b.use :html5
|
133
|
+
b.optional :readonly
|
134
|
+
b.use :label, class: 'control-label'
|
135
|
+
b.wrapper tag: 'div', class: 'form-inline' do |ba|
|
136
|
+
ba.use :input, class: 'form-control'
|
137
|
+
ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
138
|
+
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
139
|
+
end
|
140
|
+
end
|
141
|
+
# Wrappers for forms and inputs using the Bootstrap toolkit.
|
142
|
+
# Check the Bootstrap docs (http://getbootstrap.com)
|
143
|
+
# to learn about the different styles for forms and inputs,
|
144
|
+
# buttons and other elements.
|
145
|
+
config.default_wrapper = :vertical_form
|
146
|
+
config.wrapper_mappings = {
|
147
|
+
check_boxes: :vertical_radio_and_checkboxes,
|
148
|
+
radio_buttons: :vertical_radio_and_checkboxes,
|
149
|
+
file: :vertical_file_input,
|
150
|
+
boolean: :vertical_boolean,
|
151
|
+
datetime: :multi_select,
|
152
|
+
date: :multi_select,
|
153
|
+
time: :multi_select
|
154
|
+
}
|
155
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Custom form wrapper for Material Design template
|
2
|
+
SimpleForm.setup do |config|
|
3
|
+
config.boolean_style = :inline
|
4
|
+
|
5
|
+
config.wrappers :material_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
|
6
|
+
b.use :html5
|
7
|
+
b.use :placeholder
|
8
|
+
b.optional :maxlength
|
9
|
+
b.optional :minlength
|
10
|
+
b.optional :pattern
|
11
|
+
b.optional :min_max
|
12
|
+
b.optional :readonly
|
13
|
+
|
14
|
+
b.use :input, class: 'form-control', wrap_with: { tag: 'div', class: 'fg-line' }
|
15
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
16
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
17
|
+
end
|
18
|
+
|
19
|
+
config.wrappers :material_boolean_horizontal, tag: 'div', class: 'checkbox', error_class: 'has-error' do |b|
|
20
|
+
b.use :html5
|
21
|
+
b.optional :readonly
|
22
|
+
|
23
|
+
b.wrapper tag: 'label' do |append|
|
24
|
+
append.use :input
|
25
|
+
append.wrapper tag: 'i', class: 'input-helper' do |baa|
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
append.use :label_text
|
30
|
+
end
|
31
|
+
|
32
|
+
b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
|
33
|
+
b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Additional translations at https://github.com/plataformatec/devise/wiki/I18n
|
2
|
+
|
3
|
+
en:
|
4
|
+
devise:
|
5
|
+
confirmations:
|
6
|
+
confirmed: "Your email address has been successfully confirmed."
|
7
|
+
send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
|
8
|
+
send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
|
9
|
+
failure:
|
10
|
+
already_authenticated: "You are already signed in."
|
11
|
+
inactive: "Your account is not activated yet."
|
12
|
+
invalid: "Invalid %{authentication_keys} or password."
|
13
|
+
locked: "Your account is locked."
|
14
|
+
last_attempt: "You have one more attempt before your account is locked."
|
15
|
+
not_found_in_database: "Invalid %{authentication_keys} or password."
|
16
|
+
timeout: "Your session expired. Please sign in again to continue."
|
17
|
+
unauthenticated: "You need to sign in or sign up before continuing."
|
18
|
+
unconfirmed: "You have to confirm your email address before continuing."
|
19
|
+
mailer:
|
20
|
+
confirmation_instructions:
|
21
|
+
subject: "Confirmation instructions"
|
22
|
+
reset_password_instructions:
|
23
|
+
subject: "Reset password instructions"
|
24
|
+
unlock_instructions:
|
25
|
+
subject: "Unlock instructions"
|
26
|
+
email_changed:
|
27
|
+
subject: "Email Changed"
|
28
|
+
password_change:
|
29
|
+
subject: "Password Changed"
|
30
|
+
omniauth_callbacks:
|
31
|
+
failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
|
32
|
+
success: "Successfully authenticated from %{kind} account."
|
33
|
+
passwords:
|
34
|
+
no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
|
35
|
+
send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
|
36
|
+
send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
|
37
|
+
updated: "Your password has been changed successfully. You are now signed in."
|
38
|
+
updated_not_active: "Your password has been changed successfully."
|
39
|
+
registrations:
|
40
|
+
destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
|
41
|
+
signed_up: "Welcome! You have signed up successfully."
|
42
|
+
signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
|
43
|
+
signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
|
44
|
+
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
|
45
|
+
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
|
46
|
+
updated: "Your account has been updated successfully."
|
47
|
+
sessions:
|
48
|
+
signed_in: "Signed in successfully."
|
49
|
+
signed_out: "Signed out successfully."
|
50
|
+
already_signed_out: "Signed out successfully."
|
51
|
+
unlocks:
|
52
|
+
send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
|
53
|
+
send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
|
54
|
+
unlocked: "Your account has been unlocked successfully. Please sign in to continue."
|
55
|
+
errors:
|
56
|
+
messages:
|
57
|
+
already_confirmed: "was already confirmed, please try signing in"
|
58
|
+
confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
|
59
|
+
expired: "has expired, please request a new one"
|
60
|
+
not_found: "not found"
|
61
|
+
not_locked: "was not locked"
|
62
|
+
not_saved:
|
63
|
+
one: "1 error prohibited this %{resource} from being saved:"
|
64
|
+
other: "%{count} errors prohibited this %{resource} from being saved:"
|
@@ -0,0 +1,30 @@
|
|
1
|
+
en:
|
2
|
+
app:
|
3
|
+
name: Provide "app.name" translation
|
4
|
+
tagline: Provide "app.tagline" translation
|
5
|
+
|
6
|
+
lotus_admin:
|
7
|
+
sessions:
|
8
|
+
new:
|
9
|
+
title: Login
|
10
|
+
|
11
|
+
confirmations:
|
12
|
+
new:
|
13
|
+
title: Request a Confirmation Email
|
14
|
+
|
15
|
+
show:
|
16
|
+
title: Confirm Your Account
|
17
|
+
|
18
|
+
create:
|
19
|
+
title: Confirm Your Account
|
20
|
+
|
21
|
+
thanks:
|
22
|
+
title: Thanks for Confirming!
|
23
|
+
|
24
|
+
passwords:
|
25
|
+
new:
|
26
|
+
title: Request Password Reset
|
27
|
+
edit:
|
28
|
+
title: Reset Your Password
|
29
|
+
thanks:
|
30
|
+
title: Your Password was Reset
|
@@ -0,0 +1,31 @@
|
|
1
|
+
en:
|
2
|
+
simple_form:
|
3
|
+
"yes": 'Yes'
|
4
|
+
"no": 'No'
|
5
|
+
required:
|
6
|
+
text: 'required'
|
7
|
+
mark: '*'
|
8
|
+
# You can uncomment the line below if you need to overwrite the whole required html.
|
9
|
+
# When using html, text and mark won't be used.
|
10
|
+
# html: '<abbr title="required">*</abbr>'
|
11
|
+
error_notification:
|
12
|
+
default_message: "Please review the problems below:"
|
13
|
+
# Examples
|
14
|
+
# labels:
|
15
|
+
# defaults:
|
16
|
+
# password: 'Password'
|
17
|
+
# user:
|
18
|
+
# new:
|
19
|
+
# email: 'E-mail to sign in.'
|
20
|
+
# edit:
|
21
|
+
# email: 'E-mail.'
|
22
|
+
# hints:
|
23
|
+
# defaults:
|
24
|
+
# username: 'User name to sign in.'
|
25
|
+
# password: 'No special characters, please.'
|
26
|
+
# include_blanks:
|
27
|
+
# defaults:
|
28
|
+
# age: 'Rather not say'
|
29
|
+
# prompts:
|
30
|
+
# defaults:
|
31
|
+
# age: 'Select your age'
|
@@ -0,0 +1,29 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
lotus_admin/user:
|
5
|
+
one: Administrator
|
6
|
+
other: Administrators
|
7
|
+
|
8
|
+
lotus_admin:
|
9
|
+
users:
|
10
|
+
new:
|
11
|
+
help: The new administrator will receive an invitation via email.
|
12
|
+
|
13
|
+
edit:
|
14
|
+
help: You may update details for the administrator below.
|
15
|
+
|
16
|
+
profiles:
|
17
|
+
edit:
|
18
|
+
help: Make any changes to your profile below, leave your password blank to skip making changes to your password.
|
19
|
+
|
20
|
+
simple_form:
|
21
|
+
placeholders:
|
22
|
+
defaults:
|
23
|
+
name: Name
|
24
|
+
first_name: First Name
|
25
|
+
last_name: Last Name
|
26
|
+
username: Email
|
27
|
+
email: Email
|
28
|
+
password: Password
|
29
|
+
password_confirmation: Confirm Password
|
data/config/routes.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class DeviseCreateLotusAdminUsers < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :lotus_admin_users do |t|
|
6
|
+
## Database authenticatable
|
7
|
+
t.string :email, null: false, default: ""
|
8
|
+
t.string :encrypted_password, null: false, default: ""
|
9
|
+
|
10
|
+
## Recoverable
|
11
|
+
t.string :reset_password_token
|
12
|
+
t.datetime :reset_password_sent_at
|
13
|
+
|
14
|
+
## Rememberable
|
15
|
+
t.datetime :remember_created_at
|
16
|
+
|
17
|
+
## Trackable
|
18
|
+
t.integer :sign_in_count, default: 0, null: false
|
19
|
+
t.datetime :current_sign_in_at
|
20
|
+
t.datetime :last_sign_in_at
|
21
|
+
t.inet :current_sign_in_ip
|
22
|
+
t.inet :last_sign_in_ip
|
23
|
+
|
24
|
+
## Confirmable
|
25
|
+
t.string :confirmation_token
|
26
|
+
t.datetime :confirmed_at
|
27
|
+
t.datetime :confirmation_sent_at
|
28
|
+
t.string :unconfirmed_email # Only if using reconfirmable
|
29
|
+
|
30
|
+
## Lockable
|
31
|
+
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
|
32
|
+
# t.string :unlock_token # Only if unlock strategy is :email or :both
|
33
|
+
# t.datetime :locked_at
|
34
|
+
|
35
|
+
t.string :first_name, null: false
|
36
|
+
t.string :last_name, null: false
|
37
|
+
|
38
|
+
t.timestamps null: false
|
39
|
+
end
|
40
|
+
|
41
|
+
add_index :lotus_admin_users, :email, unique: true
|
42
|
+
add_index :lotus_admin_users, :reset_password_token, unique: true
|
43
|
+
add_index :lotus_admin_users, :confirmation_token, unique: true
|
44
|
+
# add_index :lotus_admin_users, :unlock_token, unique: true
|
45
|
+
end
|
46
|
+
end
|
data/lib/lotus_admin.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "lotus_admin/engine"
|
2
|
+
|
3
|
+
require 'devise'
|
4
|
+
require 'simple_form'
|
5
|
+
|
6
|
+
require 'haml'
|
7
|
+
require 'sass-rails'
|
8
|
+
require 'uglifier'
|
9
|
+
require 'font-awesome-rails'
|
10
|
+
require 'bootstrap-sass'
|
11
|
+
require 'jquery-rails'
|
12
|
+
require 'page_title_helper'
|
13
|
+
require 'kaminari'
|
14
|
+
|
15
|
+
module LotusAdmin
|
16
|
+
# Your code goes here...
|
17
|
+
end
|