client_manager 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/README.md +128 -0
- data/Rakefile +37 -0
- data/app/assets/config/client_manager_manifest.js +2 -0
- data/app/assets/javascripts/client_manager/application.js +16 -0
- data/app/assets/javascripts/client_manager/clipboard.min.js +7 -0
- data/app/assets/javascripts/client_manager/oneui.min.js +5 -0
- data/app/assets/javascripts/client_manager/passwords.js +2 -0
- data/app/assets/javascripts/client_manager/sessions.js +2 -0
- data/app/assets/javascripts/client_manager/users.js +2 -0
- data/app/assets/stylesheets/client_manager/application.css +17 -0
- data/app/assets/stylesheets/client_manager/bootstrap.min.css +5 -0
- data/app/assets/stylesheets/client_manager/custom.css +23 -0
- data/app/assets/stylesheets/client_manager/oneui.min.css +4 -0
- data/app/assets/stylesheets/client_manager/passwords.css +4 -0
- data/app/assets/stylesheets/client_manager/sessions.css +4 -0
- data/app/assets/stylesheets/client_manager/users.css +4 -0
- data/app/controllers/client_manager/application_controller.rb +31 -0
- data/app/controllers/client_manager/clients_controller.rb +46 -0
- data/app/controllers/client_manager/concerns/set_client_by_token.rb +40 -0
- data/app/controllers/client_manager/passwords_controller.rb +26 -0
- data/app/controllers/client_manager/sessions_controller.rb +38 -0
- data/app/controllers/client_manager/users_controller.rb +121 -0
- data/app/helpers/client_manager/application_helper.rb +5 -0
- data/app/helpers/client_manager/passwords_helper.rb +4 -0
- data/app/helpers/client_manager/sessions_helper.rb +4 -0
- data/app/helpers/client_manager/users_helper.rb +4 -0
- data/app/jobs/client_manager/application_job.rb +4 -0
- data/app/mailers/client_manager/application_mailer.rb +6 -0
- data/app/mailers/client_manager/registration_mailer.rb +12 -0
- data/app/models/client_manager/application_record.rb +5 -0
- data/app/models/client_manager/client.rb +33 -0
- data/app/models/client_manager/user.rb +42 -0
- data/app/views/client_manager/clients/index.html.erb +37 -0
- data/app/views/client_manager/clients/new.html.erb +27 -0
- data/app/views/client_manager/clients/show.html.erb +41 -0
- data/app/views/client_manager/passwords/change.html.erb +46 -0
- data/app/views/client_manager/registration_mailer/registration_email.html.erb +90 -0
- data/app/views/client_manager/sessions/login.html.erb +53 -0
- data/app/views/client_manager/users/edit.html.erb +55 -0
- data/app/views/client_manager/users/index.html.erb +53 -0
- data/app/views/client_manager/users/new.html.erb +39 -0
- data/app/views/layouts/client_manager/application.html.erb +20 -0
- data/app/views/layouts/client_manager/none.html.erb +1 -0
- data/app/views/layouts/client_manager/partials/_header.html.erb +40 -0
- data/app/views/layouts/client_manager/partials/_modal.html.erb +15 -0
- data/config/locales/devise.en.yml +62 -0
- data/config/routes.rb +10 -0
- data/db/migrate/20160816183756_create_client_manager_users.rb +11 -0
- data/db/migrate/20160822112804_create_client_manager_clients.rb +11 -0
- data/db/migrate/20160905184226_add_password_digest_to_user.rb +5 -0
- data/db/migrate/20160930152731_add_password_changed_flag_to_users.rb +5 -0
- data/db/migrate/20161007235114_add_super_admin_flag_to_users.rb +5 -0
- data/lib/client_manager.rb +5 -0
- data/lib/client_manager/engine.rb +32 -0
- data/lib/client_manager/version.rb +3 -0
- data/lib/generators/client_manager/install_generator.rb +107 -0
- data/lib/generators/client_manager/templates/client_manager.rb +3 -0
- data/lib/tasks/client_manager_tasks.rake +12 -0
- metadata +217 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
6
|
+
<title>ClientManager</title>
|
7
|
+
<meta name="viewport" content="width=device-width"/>
|
8
|
+
<style type="text/css">
|
9
|
+
@media only screen and (max-width: 550px), screen and (max-device-width: 550px) {
|
10
|
+
body[yahoo] .buttonwrapper {
|
11
|
+
background-color: transparent !important;
|
12
|
+
}
|
13
|
+
|
14
|
+
body[yahoo] .button {
|
15
|
+
padding: 0 !important;
|
16
|
+
}
|
17
|
+
|
18
|
+
body[yahoo] .button a {
|
19
|
+
background-color: #777777;
|
20
|
+
padding: 15px 25px !important;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
@media only screen and (min-device-width: 601px) {
|
25
|
+
.content {
|
26
|
+
width: 600px !important;
|
27
|
+
}
|
28
|
+
|
29
|
+
.col387 {
|
30
|
+
width: 387px !important;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
</style>
|
34
|
+
</head>
|
35
|
+
<body bgcolor="#4b4b4b" style="margin: 0; padding: 0;" yahoo="fix">
|
36
|
+
<!--[if (gte mso 9)|(IE)]>
|
37
|
+
<table width="600" align="center" cellpadding="0" cellspacing="0" border="0">
|
38
|
+
<tr>
|
39
|
+
<td>
|
40
|
+
<![endif]-->
|
41
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0"
|
42
|
+
style="border-collapse: collapse; width: 100%; max-width: 600px;" class="content">
|
43
|
+
<tr>
|
44
|
+
<td align="center"
|
45
|
+
style="padding: 20px 20px 20px 20px; color: #ffffff; font-family: Arial, sans-serif; font-size: 36px; font-weight: bold;">
|
46
|
+
</td>
|
47
|
+
</tr>
|
48
|
+
<tr>
|
49
|
+
<td align="center" bgcolor="#ffffff"
|
50
|
+
style="padding: 40px 20px 0 20px; color: #555555; font-family: Arial, sans-serif; font-size: 20px; line-height: 30px;">
|
51
|
+
<b>Hey <%= @user.name %>, <br>
|
52
|
+
You can now use <%= @application_name %>'s API</b>
|
53
|
+
</td>
|
54
|
+
</tr>
|
55
|
+
<tr>
|
56
|
+
<td align="center" bgcolor="#ffffff"
|
57
|
+
style="padding: 0 20px 40px 20px; color: #777777; font-family: Arial, sans-serif; font-size: 18px; line-height: 30px; border-bottom: 1px solid #f6f6f6;">
|
58
|
+
Password: <%= @user.password %>
|
59
|
+
</td>
|
60
|
+
</tr>
|
61
|
+
<tr>
|
62
|
+
<td align="center" bgcolor="#ffffff"
|
63
|
+
style="padding: 20px 20px 20px 20px; color: #555555; font-family: Arial, sans-serif; font-size: 15px; line-height: 24px;">
|
64
|
+
You'll have to change your password upon signing in the first time.
|
65
|
+
</td>
|
66
|
+
</tr>
|
67
|
+
<tr>
|
68
|
+
<td align="center" bgcolor="#f9f9f9" style="padding: 30px 20px 30px 20px; font-family: Arial, sans-serif;">
|
69
|
+
<table bgcolor="#777777" border="0" cellspacing="0" cellpadding="0" class="buttonwrapper">
|
70
|
+
<tr>
|
71
|
+
<td align="center" height="55"
|
72
|
+
style=" padding: 0 35px 0 35px; font-family: Arial, sans-serif; font-size: 22px;"
|
73
|
+
class="button">
|
74
|
+
<!--TODO change URL-->
|
75
|
+
<a href="<%= @url %>" style="color: #ffffff; text-align: center; text-decoration: none;">Go To
|
76
|
+
ClientManager</a>
|
77
|
+
</td>
|
78
|
+
</tr>
|
79
|
+
|
80
|
+
</table>
|
81
|
+
</td>
|
82
|
+
</tr>
|
83
|
+
</table>
|
84
|
+
<!--[if (gte mso 9)|(IE)]>
|
85
|
+
</td>
|
86
|
+
</tr>
|
87
|
+
</table>
|
88
|
+
<![endif]-->
|
89
|
+
</body>
|
90
|
+
</html>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<!-- Login Content -->
|
2
|
+
<div class="bg-white pulldown">
|
3
|
+
<div class="content content-boxed overflow-hidden">
|
4
|
+
<div class="row">
|
5
|
+
<div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4">
|
6
|
+
<div class="push-30-t push-50 animated fadeIn">
|
7
|
+
<!-- Login Title -->
|
8
|
+
<div class="text-center">
|
9
|
+
<i class="fa fa-2x fa-circle-o-notch text-primary" aria-hidden="true "></i>
|
10
|
+
<h1 class="text-muted push-15-t">Login</h1>
|
11
|
+
</div>
|
12
|
+
<!-- END Login Title -->
|
13
|
+
|
14
|
+
<!-- Login Form -->
|
15
|
+
<!-- jQuery Validation (.js-validation-login class is initialized in js/pages/base_pages_login.js) -->
|
16
|
+
<!-- For more examples you can check out https://github.com/jzaefferer/jquery-validation -->
|
17
|
+
<%= form_tag({action: :login_attempt}, class: "js-validation-login form-horizontal push-30-t") do %>
|
18
|
+
<div class="form-group">
|
19
|
+
<div class="col-xs-12">
|
20
|
+
<div class="form-material form-material-primary floating">
|
21
|
+
<%= text_field_tag(:email, "", class: "form-control", id: "login-email") %>
|
22
|
+
<label for="login-email">Email</label>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
<div class="form-group">
|
27
|
+
<div class="col-xs-12">
|
28
|
+
<div class="form-material form-material-primary floating">
|
29
|
+
<%= password_field_tag(:password, "", class: "form-control", id: "login-password") %>
|
30
|
+
<label for="login-password">Password</label>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<!--<div class="form-group">-->
|
35
|
+
<!--<div class="col-xs-12">-->
|
36
|
+
<!--<div class="font-s13 text-right push-5-t">-->
|
37
|
+
<!--<a href="#">Forgot Password?</a>-->
|
38
|
+
<!--</div>-->
|
39
|
+
<!--</div>-->
|
40
|
+
<!--</div>-->
|
41
|
+
<div class="form-group push-30-t">
|
42
|
+
<div class="col-xs-12 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4">
|
43
|
+
<button class="btn btn-sm btn-block btn-primary" type="submit">Log in</button>
|
44
|
+
</div>
|
45
|
+
</div>
|
46
|
+
<% end %>
|
47
|
+
<!-- END Login Form -->
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
<!-- END Login Content -->
|
@@ -0,0 +1,55 @@
|
|
1
|
+
<%= form_for @user, html: {class: "form-horizontal push-5-t"} do |user_form| %>
|
2
|
+
<div class="block block-themed block-transparent remove-margin-b">
|
3
|
+
<div class="block-header bg-primary-dark">
|
4
|
+
<ul class="block-options">
|
5
|
+
<li>
|
6
|
+
<button data-dismiss="modal" type="button">
|
7
|
+
<span class="sr-only">Close Modal</span>
|
8
|
+
<i class="fa fa-close" aria-hidden="true"></i>
|
9
|
+
</button>
|
10
|
+
</li>
|
11
|
+
</ul>
|
12
|
+
<h3 class="block-title">Edit <%= @modal_title %></h3>
|
13
|
+
</div>
|
14
|
+
<div class="block-content">
|
15
|
+
<div class="form-group">
|
16
|
+
<%= user_form.label :name, class: "col-xs-12", required: true %>
|
17
|
+
<div class="col-xs-12">
|
18
|
+
<%= user_form.text_field :name, class: "form-control", required: true %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<div class="form-group">
|
22
|
+
<%= user_form.label :email, class: "col-xs-12", required: true %>
|
23
|
+
<div class="col-xs-12">
|
24
|
+
<%= user_form.text_field :email, class: "form-control", type: "email", required: true, disabled: true %>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
<% if client_manager_current_user.superadmin %>
|
28
|
+
<div class="form-group">
|
29
|
+
<%= user_form.label :maximum_number_of_clients, class: "col-xs-12", required: true %>
|
30
|
+
<div class="col-xs-12">
|
31
|
+
<%= user_form.text_field :maximum_number_of_clients, class: "form-control", type: @input_type, value: @max_clients, required: true, disabled: @client_manager_current_user_is_superadmin %>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
<% end %>
|
35
|
+
<% if client_manager_current_user == @user %>
|
36
|
+
<div class="form-group">
|
37
|
+
<%= user_form.label "New Password", class: "col-xs-12", required: true %>
|
38
|
+
<div class="col-xs-12">
|
39
|
+
<%= user_form.password_field :new_password, class: "form-control" %>
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
<div class="form-group">
|
43
|
+
<%= user_form.label "Confirm New Password", class: "col-xs-12", required: true %>
|
44
|
+
<div class="col-xs-12">
|
45
|
+
<%= user_form.password_field :new_password_confirmation, class: "form-control" %>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
<% end %>
|
49
|
+
<div class="modal-footer">
|
50
|
+
<button class="btn btn-sm btn-success" type="submit"><i class="fa fa-check" aria-hidden="true"></i> <%= @button_text %></button>
|
51
|
+
<button class="btn btn-sm btn-danger" type="button" data-dismiss="modal">Close</button>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
<% end %>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<%= render 'layouts/client_manager/partials/header', path: new_user_path, path_title: 'Add New User' %>
|
2
|
+
<main id="main-container">
|
3
|
+
<div class="content bg-gray-lighter">
|
4
|
+
<div class="row items-push">
|
5
|
+
<div class="col-sm-7">
|
6
|
+
<h1 class="page-heading">
|
7
|
+
Users
|
8
|
+
</h1>
|
9
|
+
</div>
|
10
|
+
</div>
|
11
|
+
</div>
|
12
|
+
<div class="content">
|
13
|
+
<div class="block">
|
14
|
+
|
15
|
+
<div class="block-content">
|
16
|
+
<!-- DataTables init on table by adding .js-dataTable-full class, functionality initialized in js/pages/base_tables_datatables.js -->
|
17
|
+
<table class="table table-bordered table-striped js-dataTable-full">
|
18
|
+
<thead>
|
19
|
+
<tr>
|
20
|
+
<th>Name</th>
|
21
|
+
<th class="hidden-xs">Email</th>
|
22
|
+
<th class="hidden-xs">Max Clients</th>
|
23
|
+
<th class="hidden-xs">Clients</th>
|
24
|
+
<th class="text-center" style="width: 10%;">Actions</th>
|
25
|
+
</tr>
|
26
|
+
</thead>
|
27
|
+
<tbody>
|
28
|
+
<% @users.each do |user| %>
|
29
|
+
<tr>
|
30
|
+
<td class="font-w600"><%= user.name %></td>
|
31
|
+
<td class="hidden-xs"><%= user.email %></td>
|
32
|
+
<td class="hidden-xs"><%= user.maximum_number_of_clients %> </td>
|
33
|
+
<td class="hidden-xs"><%= user.client_count %> </td>
|
34
|
+
<td class="text-center">
|
35
|
+
<div class="btn-group">
|
36
|
+
<a href="<%= edit_user_path(user) %>" data-toggle="modal" data-target="#modal">
|
37
|
+
<span class="sr-only">Edit User <%= user.name %></span>
|
38
|
+
<i class="fa fa-pencil" aria-hidden="true"></i>
|
39
|
+
</a>
|
40
|
+
<a href="<%= user_path(user)%>" data-confirm="Are you sure you want to delete this user?" data-method="delete">
|
41
|
+
<span class="sr-only">Delete User <%= user.name %></span>
|
42
|
+
<i class="fa fa-times text-danger" aria-hidden="true"></i>
|
43
|
+
</a>
|
44
|
+
</div>
|
45
|
+
</td>
|
46
|
+
</tr>
|
47
|
+
<% end %>
|
48
|
+
</tbody>
|
49
|
+
</table>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
</main>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<%= form_for @user, html: {class: "form-horizontal push-5-t"} do |user_form| %>
|
2
|
+
<div class="block block-themed block-transparent remove-margin-b">
|
3
|
+
<div class="block-header bg-primary-dark">
|
4
|
+
<ul class="block-options">
|
5
|
+
<li>
|
6
|
+
<button data-dismiss="modal" type="button">
|
7
|
+
<span class="sr-only">Close Modal</span>
|
8
|
+
<i class="fa fa-close" aria-hidden="true"></i>
|
9
|
+
</button>
|
10
|
+
</li>
|
11
|
+
</ul>
|
12
|
+
<h3 class="block-title">New User</h3>
|
13
|
+
</div>
|
14
|
+
<div class="block-content">
|
15
|
+
<div class="form-group">
|
16
|
+
<%= user_form.label :name, class: "col-xs-12", required: true %>
|
17
|
+
<div class="col-xs-12">
|
18
|
+
<%= user_form.text_field :name, class: "form-control", required: true %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<div class="form-group">
|
22
|
+
<%= user_form.label :email, class: "col-xs-12", required: true %>
|
23
|
+
<div class="col-xs-12">
|
24
|
+
<%= user_form.text_field :email, class: "form-control", type: "email", required: true%>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
<div class="form-group">
|
28
|
+
<%= user_form.label :maximum_number_of_clients, class: "col-xs-12", required: true %>
|
29
|
+
<div class="col-xs-12">
|
30
|
+
<%= user_form.text_field :maximum_number_of_clients, class: "form-control", type: "number", required: true %>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
<div class="modal-footer">
|
34
|
+
<button class="btn btn-sm btn-success" type="submit"><i class="fa fa-check" aria-hidden="true"></i> Save user</button>
|
35
|
+
<button class="btn btn-sm btn-danger" type="button" data-dismiss="modal">Close</button>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<% end %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html class="no-focus" lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>ClientManager</title>
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400italic,600,700%7COpen+Sans:300,400,400italic,600,700">
|
9
|
+
<%= growlyflash_static_notices %>
|
10
|
+
<%= stylesheet_link_tag "client_manager/application", media: "all" %>
|
11
|
+
<%= javascript_include_tag "client_manager/application" %>
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
<%= yield %>
|
15
|
+
</body>
|
16
|
+
</html>
|
17
|
+
|
18
|
+
<%= render 'layouts/client_manager/partials/modal' %>
|
19
|
+
|
20
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= yield %>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<header id="header-navbar" class="content-mini content-mini-full">
|
2
|
+
<nav>
|
3
|
+
<ul class="nav-header pull-right">
|
4
|
+
<li>
|
5
|
+
<a href="<%= path %>" class="btn btn-success" data-toggle="modal" data-target="#modal">
|
6
|
+
<span class="sr-only"><%= path_title %></span>
|
7
|
+
<i class="fa fa-plus" aria-hidden="true"></i>
|
8
|
+
</a>
|
9
|
+
</li>
|
10
|
+
<% if controller_name != "clients" %>
|
11
|
+
<li>
|
12
|
+
<a href="<%= clients_path %>" class="btn btn-default">
|
13
|
+
<span class="sr-only">Clients</span>
|
14
|
+
<i class="fa fa-server" aria-hidden="true"></i>
|
15
|
+
</a>
|
16
|
+
</li>
|
17
|
+
<% end %>
|
18
|
+
<% if client_manager_current_user.superadmin && controller_name != "users" %>
|
19
|
+
<li>
|
20
|
+
<a href="<%= users_path %>" class="btn btn-warning">
|
21
|
+
<span class="sr-only">Users</span>
|
22
|
+
<i class="fa fa-users" aria-hidden="true"></i>
|
23
|
+
</a>
|
24
|
+
</li>
|
25
|
+
<% end %>
|
26
|
+
<li>
|
27
|
+
<a href="<%= edit_user_path(client_manager_current_user) %>" class="btn btn-primary" data-toggle="modal" data-target="#modal">
|
28
|
+
<span class="sr-only">Your Profile</span>
|
29
|
+
<i class="fa fa-user" aria-hidden="true"></i>
|
30
|
+
</a>
|
31
|
+
</li>
|
32
|
+
<li>
|
33
|
+
<a href="<%= logout_path %>" class="btn btn-danger" type="button" data-confirm="Are you sure you want to sign out?">
|
34
|
+
<span class="sr-only">Sign Out</span>
|
35
|
+
<i class="fa fa-sign-out" aria-hidden="true"></i>
|
36
|
+
</a>
|
37
|
+
</li>
|
38
|
+
</ul>
|
39
|
+
</nav>
|
40
|
+
</header>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-hidden="true">
|
2
|
+
<div class="modal-dialog modal-dialog-popout">
|
3
|
+
<div class="modal-content">
|
4
|
+
|
5
|
+
</div>
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<script>
|
10
|
+
$(function () {
|
11
|
+
$('.modal').on('hidden.bs.modal', function () {
|
12
|
+
$(this).removeData('bs.modal');
|
13
|
+
});
|
14
|
+
});
|
15
|
+
</script>
|
@@ -0,0 +1,62 @@
|
|
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
|
+
password_change:
|
27
|
+
subject: "Password Changed"
|
28
|
+
omniauth_callbacks:
|
29
|
+
failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
|
30
|
+
success: "Successfully authenticated from %{kind} account."
|
31
|
+
passwords:
|
32
|
+
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."
|
33
|
+
send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
|
34
|
+
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."
|
35
|
+
updated: "Your password has been changed successfully. You are now signed in."
|
36
|
+
updated_not_active: "Your password has been changed successfully."
|
37
|
+
registrations:
|
38
|
+
destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
|
39
|
+
signed_up: "Welcome! You have signed up successfully."
|
40
|
+
signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
|
41
|
+
signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
|
42
|
+
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."
|
43
|
+
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."
|
44
|
+
updated: "Your account has been updated successfully."
|
45
|
+
sessions:
|
46
|
+
signed_in: "Signed in successfully."
|
47
|
+
signed_out: "Signed out successfully."
|
48
|
+
already_signed_out: "Signed out successfully."
|
49
|
+
unlocks:
|
50
|
+
send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
|
51
|
+
send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
|
52
|
+
unlocked: "Your account has been unlocked successfully. Please sign in to continue."
|
53
|
+
errors:
|
54
|
+
messages:
|
55
|
+
already_confirmed: "was already confirmed, please try signing in"
|
56
|
+
confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
|
57
|
+
expired: "has expired, please request a new one"
|
58
|
+
not_found: "not found"
|
59
|
+
not_locked: "was not locked"
|
60
|
+
not_saved:
|
61
|
+
one: "1 error prohibited this %{resource} from being saved:"
|
62
|
+
other: "%{count} errors prohibited this %{resource} from being saved:"
|
data/config/routes.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
ClientManager::Engine.routes.draw do
|
2
|
+
root to: 'sessions#login'
|
3
|
+
get 'login', to: 'sessions#login'
|
4
|
+
get 'logout', to: 'sessions#logout'
|
5
|
+
post 'login_attempt', to: 'sessions#login_attempt'
|
6
|
+
get 'change_password', to: 'passwords#change'
|
7
|
+
post 'change_password_attempt', to: 'passwords#change_password_attempt'
|
8
|
+
resources :clients
|
9
|
+
resources :users
|
10
|
+
end
|