lesli_audit 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +5 -0
  3. data/app/assets/config/lesli_audit_manifest.js +38 -0
  4. data/app/assets/images/lesli_audit/audit-logo.svg +72 -0
  5. data/app/assets/javascripts/lesli_audit/application.js +3592 -0
  6. data/app/assets/stylesheets/lesli_audit/application.scss +35 -0
  7. data/app/assets/stylesheets/lesli_audit/dashboard.scss +0 -0
  8. data/app/controllers/lesli_audit/analytics_controller.rb +36 -0
  9. data/app/controllers/lesli_audit/application_controller.rb +4 -0
  10. data/app/controllers/lesli_audit/dashboards_controller.rb +59 -0
  11. data/app/helpers/lesli_audit/analytics_helper.rb +4 -0
  12. data/app/helpers/lesli_audit/application_helper.rb +4 -0
  13. data/app/helpers/lesli_audit/dashboards_helper.rb +4 -0
  14. data/app/jobs/lesli_audit/application_job.rb +4 -0
  15. data/app/mailers/lesli_audit/application_mailer.rb +6 -0
  16. data/app/models/lesli_audit/analytic.rb +4 -0
  17. data/app/models/lesli_audit/application_record.rb +5 -0
  18. data/app/models/lesli_audit/dashboard.rb +4 -0
  19. data/app/services/lesli_audit/account/activity_services.rb +69 -0
  20. data/app/services/lesli_audit/analytic_service.rb +151 -0
  21. data/app/services/lesli_audit/analytics/trend_services.rb +84 -0
  22. data/app/services/lesli_audit/analytics/visitor_service.rb +166 -0
  23. data/app/services/lesli_audit/request_services.rb +71 -0
  24. data/app/services/lesli_audit/users/activity_services.rb +61 -0
  25. data/app/services/lesli_audit/users/log_services.rb +62 -0
  26. data/app/services/lesli_audit/users/registration_services.rb +62 -0
  27. data/app/services/lesli_audit/users/role_services.rb +61 -0
  28. data/app/services/lesli_audit/users/working_hour_services.rb +78 -0
  29. data/app/views/lesli_audit/analytics/_analytic.html.erb +2 -0
  30. data/app/views/lesli_audit/analytics/_form.html.erb +17 -0
  31. data/app/views/lesli_audit/analytics/edit.html.erb +10 -0
  32. data/app/views/lesli_audit/analytics/index.html.erb +1 -0
  33. data/app/views/lesli_audit/analytics/new.html.erb +9 -0
  34. data/app/views/lesli_audit/analytics/show.html.erb +10 -0
  35. data/app/views/lesli_audit/dashboards/_dashboard.html.erb +2 -0
  36. data/app/views/lesli_audit/dashboards/_form.html.erb +17 -0
  37. data/app/views/lesli_audit/dashboards/edit.html.erb +10 -0
  38. data/app/views/lesli_audit/dashboards/index.html.erb +14 -0
  39. data/app/views/lesli_audit/dashboards/new.html.erb +9 -0
  40. data/app/views/lesli_audit/dashboards/show.html.erb +1 -0
  41. data/app/views/lesli_audit/partials/_engine-navigation.html.erb +39 -0
  42. data/config/routes.rb +45 -0
  43. data/db/migrate/v1.0/0803000110_create_lesli_audit_accounts.rb +42 -0
  44. data/db/migrate/v1.0/0803050110_create_lesli_audit_dashboards.rb +51 -0
  45. data/db/migrate/v1.0/0803050210_create_lesli_audit_dashboard_components.rb +53 -0
  46. data/lib/lesli_audit/engine.rb +18 -0
  47. data/lib/lesli_audit/version.rb +3 -0
  48. data/lib/lesli_audit.rb +6 -0
  49. data/lib/tasks/lesli_audit_tasks.rake +4 -0
  50. data/lib/vue/application.js +102 -0
  51. data/lib/vue/apps/accounts/activities.vue +48 -0
  52. data/lib/vue/apps/analytics/index.vue +18 -0
  53. data/lib/vue/apps/analytics/requests.vue +67 -0
  54. data/lib/vue/apps/analytics/trends.vue +149 -0
  55. data/lib/vue/apps/analytics/visitors.vue +91 -0
  56. data/lib/vue/apps/requests/index.vue +123 -0
  57. data/lib/vue/apps/security/passwords.vue +52 -0
  58. data/lib/vue/apps/security/sessions.vue +63 -0
  59. data/lib/vue/apps/users/activities.vue +49 -0
  60. data/lib/vue/apps/users/logs.vue +49 -0
  61. data/lib/vue/apps/users/registrations.vue +98 -0
  62. data/lib/vue/apps/users/roles.vue +70 -0
  63. data/lib/vue/apps/users/workingHours.vue +52 -0
  64. data/lib/vue/stores/accounts/activities.js +87 -0
  65. data/lib/vue/stores/analytics/visitors.js +130 -0
  66. data/lib/vue/stores/request.js +70 -0
  67. data/lib/vue/stores/security/password.js +75 -0
  68. data/lib/vue/stores/security/session.js +78 -0
  69. data/lib/vue/stores/users/activities.js +76 -0
  70. data/lib/vue/stores/users/logs.js +74 -0
  71. data/lib/vue/stores/users/registrations.js +61 -0
  72. data/lib/vue/stores/users/roles.js +52 -0
  73. data/lib/vue/stores/users/working_hours.js +92 -0
  74. data/license +674 -0
  75. data/readme.md +120 -0
  76. metadata +134 -0
@@ -0,0 +1,71 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS development platform.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ module CloudAudit
34
+ class RequestServices < ApplicationLesliServices
35
+
36
+ # @overwrite
37
+ # @return {Hash} Paginated list of the records
38
+ # @param {query} Has of the formated queries/filters that will be applied to filter data
39
+ # @description
40
+ # @example
41
+ def index
42
+ search_string = nil # query[:search].downcase.gsub(" ","%") unless query[:search].blank?
43
+ order_string = "user_requests.created_at"
44
+
45
+ user_requests = current_user.account.users.joins(:requests)
46
+ #user_requests = user_requests.where("users.email = ?", query[:filters][:user]) unless query[:filters][:user].blank?
47
+
48
+ if !search_string.blank?
49
+ # user_requests = user_requests.where([
50
+ # "lower(users.email) like :search_string",
51
+ # "lower(request_controller) like :search_string",
52
+ # "lower(request_action) like :search_string"
53
+ # ].join(" or "), {
54
+ # search_string: "%#{search_string}%"
55
+ # })
56
+ end
57
+
58
+ user_requests.select(
59
+ :id,
60
+ "users.id as user_id",
61
+ "users.email",
62
+ :request_controller,
63
+ :request_action,
64
+ :request_method,
65
+ :user_session_id,
66
+ Date2.new.date_time.db_timestamps("user_requests")
67
+ ).page(query[:pagination][:page])
68
+ .per(query[:pagination][:perPage])
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,61 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS development platform.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ module CloudAudit
34
+ class Users::ActivityServices < ApplicationLesliServices
35
+
36
+ # @overwrite
37
+ # @return {Hash} Paginated list of the records
38
+ # @param {query} Has of the formated queries/filters that will be applied to filter data
39
+ # @description
40
+ # @example
41
+ def index
42
+ #search_string = query[:search].downcase.gsub(" ","%") unless query[:search].blank?
43
+
44
+ activities = ::User::Activity.joins(:user)
45
+ #activities = activities.where("users.email = ?", query[:filters][:user]) unless query[:filters][:user].blank?
46
+ #activities = activities.where("field_name like :search or value_from like :search or value_to like: search", { search: "%#{search_string}%"}) unless search_string.blank?
47
+ activities = activities.select(
48
+ "users.email",
49
+ "users.id",
50
+ :field_name,
51
+ :value_from,
52
+ :value_to,
53
+ :category,
54
+ Date2.new.date_time.db_timestamps("user_activities")
55
+ )
56
+ .page(query[:pagination][:page])
57
+ .per(query[:pagination][:perPage])
58
+ .order(created_at: :desc)
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,62 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS development platform.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ module CloudAudit
34
+ class Users::LogServices < ApplicationLesliServices
35
+
36
+ # @overwrite
37
+ # @return {Hash} Paginated list of the records
38
+ # @param {query} Has of the formated queries/filters that will be applied to filter data
39
+ # @description
40
+ # @example
41
+ def index
42
+ search_string = query[:search].downcase.gsub(" ","%") unless query[:search].blank?
43
+
44
+ records = current_user.account.users.joins(:logs)
45
+ #records = records.where("users.email = ?", query[:filters][:user]) unless query[:filters][:user].blank?
46
+ records = records.where("title like :search or description like :search", { search: "%#{search_string}%"}) unless search_string.blank?
47
+ records = records.select(
48
+ :id,
49
+ "users.id as user_id",
50
+ "users.email",
51
+ :title,
52
+ :description,
53
+ Date2.new.date_time.db_timestamps("user_logs")
54
+ )
55
+ .page(query[:pagination][:page])
56
+ .per(query[:pagination][:perPage])
57
+ .order("user_logs.created_at DESC")
58
+
59
+ records
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,62 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS development platform.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ module CloudAudit
34
+ class Users::RegistrationServices < ApplicationLesliServices
35
+
36
+ # @overwrite
37
+ # @return {Hash} Paginated list of the records
38
+ # @param {query} Has of the formated queries/filters that will be applied to filter data
39
+ # @description
40
+ # @example
41
+ def index
42
+ period = 'month'
43
+ #Get filters from http request
44
+ group = query[:group]
45
+ #Get period only if the request have filters
46
+ unless group.blank?
47
+ period = group
48
+ end
49
+
50
+ unless period.blank? || (period != 'day' && period != 'week' && period != 'month' && period != 'year')
51
+ registrations = current_user.account.users.group("DATE_TRUNC('#{period}', created_at)")
52
+ registrations.order("date_trunc_#{period}_created_at DESC").count.map do |request|
53
+ {
54
+ :date => Date2.new(request[0]).date.to_s,
55
+ :count => request[1]
56
+ }
57
+ end
58
+ end
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,61 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS development platform.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ module CloudAudit
34
+ class Users::RoleServices < ApplicationLesliServices
35
+
36
+ # @overwrite
37
+ # @return {Hash} Paginated list of the records
38
+ # @param {query} Has of the formated queries/filters that will be applied to filter data
39
+ # @description
40
+ # @example
41
+ def index
42
+ current_user.account.roles
43
+ .joins("
44
+ inner join (
45
+ select
46
+ role_id,
47
+ count(1) as users
48
+ from user_roles ur
49
+ group by role_id
50
+ ) ur
51
+ on ur.role_id = roles.id "
52
+ ).select(
53
+ "roles.id",
54
+ "roles.name",
55
+ "roles.active",
56
+ "roles.object_level_permission",
57
+ "ur.users"
58
+ )
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,78 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS development platform.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ module CloudAudit
34
+ class Users::WorkingHourServices < ApplicationLesliServices
35
+
36
+ # @overwrite
37
+ # @return {Hash} Paginated list of the records
38
+ # @param {query} Has of the formated queries/filters that will be applied to filter data
39
+ # @description
40
+ # @example
41
+ def index
42
+
43
+ #Get string for search query
44
+ search_string = query[:search].downcase.gsub(" ","%") unless query[:search].blank?
45
+
46
+ #Order by column in table of users
47
+ order_string = "date"
48
+ unless query.dig(:order, :by).blank?
49
+ order_string = query.dig(:order, :by)
50
+ end
51
+
52
+ user_requests = current_user.account.users.joins(:requests).joins(:roles)
53
+
54
+ user_requests = user_requests.select(
55
+ :id,
56
+ "users.id as userid",
57
+ "users.email",
58
+ "DATE_TRUNC('day', user_requests.created_at) as date",
59
+ "min(user_requests.created_at) as first_activity",
60
+ "max(user_requests.created_at) as last_activity",
61
+ "roles.name"
62
+ ).order(order_string.concat(" ").concat(query.dig(:order, :dir)))
63
+
64
+
65
+ user_requests = user_requests.group(:userid, "DATE_TRUNC('day', user_requests.created_at)", "roles.name")
66
+
67
+ unless search_string.blank?
68
+ user_requests = user_requests.where([
69
+ "lower(users.email) like :search_string or lower(roles.name) like :search_string",
70
+ ].join(" or "), {
71
+ search_string: "%#{search_string}%"
72
+ })
73
+ end
74
+
75
+ user_requests
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,2 @@
1
+ <div id="<%= dom_id analytic %>">
2
+ </div>
@@ -0,0 +1,17 @@
1
+ <%= form_with(model: analytic) do |form| %>
2
+ <% if analytic.errors.any? %>
3
+ <div style="color: red">
4
+ <h2><%= pluralize(analytic.errors.count, "error") %> prohibited this analytic from being saved:</h2>
5
+
6
+ <ul>
7
+ <% analytic.errors.each do |error| %>
8
+ <li><%= error.full_message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div>
15
+ <%= form.submit %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <h1>Editing analytic</h1>
2
+
3
+ <%= render "form", analytic: @analytic %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Show this analytic", @analytic %> |
9
+ <%= link_to "Back to analytics", analytics_path %>
10
+ </div>
@@ -0,0 +1 @@
1
+ <router-view></router-view>
@@ -0,0 +1,9 @@
1
+ <h1>New analytic</h1>
2
+
3
+ <%= render "form", analytic: @analytic %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Back to analytics", analytics_path %>
9
+ </div>
@@ -0,0 +1,10 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <%= render @analytic %>
4
+
5
+ <div>
6
+ <%= link_to "Edit this analytic", edit_analytic_path(@analytic) %> |
7
+ <%= link_to "Back to analytics", analytics_path %>
8
+
9
+ <%= button_to "Destroy this analytic", @analytic, method: :delete %>
10
+ </div>
@@ -0,0 +1,2 @@
1
+ <div id="<%= dom_id dashboard %>">
2
+ </div>
@@ -0,0 +1,17 @@
1
+ <%= form_with(model: dashboard) do |form| %>
2
+ <% if dashboard.errors.any? %>
3
+ <div style="color: red">
4
+ <h2><%= pluralize(dashboard.errors.count, "error") %> prohibited this dashboard from being saved:</h2>
5
+
6
+ <ul>
7
+ <% dashboard.errors.each do |error| %>
8
+ <li><%= error.full_message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div>
15
+ <%= form.submit %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,10 @@
1
+ <h1>Editing dashboard</h1>
2
+
3
+ <%= render "form", dashboard: @dashboard %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Show this dashboard", @dashboard %> |
9
+ <%= link_to "Back to dashboards", dashboards_path %>
10
+ </div>
@@ -0,0 +1,14 @@
1
+ <p style="color: green"><%= notice %></p>
2
+
3
+ <h1>Dashboards</h1>
4
+
5
+ <div id="dashboards">
6
+ <% @dashboards.each do |dashboard| %>
7
+ <%= render dashboard %>
8
+ <p>
9
+ <%= link_to "Show this dashboard", dashboard %>
10
+ </p>
11
+ <% end %>
12
+ </div>
13
+
14
+ <%= link_to "New dashboard", new_dashboard_path %>
@@ -0,0 +1,9 @@
1
+ <h1>New dashboard</h1>
2
+
3
+ <%= render "form", dashboard: @dashboard %>
4
+
5
+ <br>
6
+
7
+ <div>
8
+ <%= link_to "Back to dashboards", dashboards_path %>
9
+ </div>
@@ -0,0 +1 @@
1
+ <router-view></router-view>
@@ -0,0 +1,39 @@
1
+ <%
2
+ =begin
3
+
4
+ Lesli
5
+
6
+ Copyright (c) 2023, Lesli Technologies, S. A.
7
+
8
+ This program is free software: you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation, either version 3 of the License, or
11
+ (at your option) any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with this program. If not, see http://www.gnu.org/licenses/.
20
+
21
+ Lesli · Ruby on Rails SaaS development platform.
22
+
23
+ Made with ♥ by https://www.lesli.tech
24
+ Building a better future, one line of code at a time.
25
+
26
+ @contact hello@lesli.tech
27
+ @website https://www.lesli.tech
28
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
29
+
30
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
31
+ // ·
32
+ =end
33
+ %>
34
+
35
+ <%= navigation_item(lesli_audit.dashboard_path, "Dashboard", "ri-dashboard-3-line"); %>
36
+ <%= navigation_item(lesli_audit.dashboard_path, "Users", "ri-team-line"); %>
37
+ <%= navigation_item(lesli_audit.analytics_path, "Analytics", "ri-pie-chart-line"); %>
38
+ <%= navigation_item(lesli_audit.dashboard_path, "Account", "ri-briefcase-line"); %>
39
+ <%= navigation_item(lesli_audit.dashboard_path, "Requests", "ri-arrow-left-right-fill"); %>
data/config/routes.rb ADDED
@@ -0,0 +1,45 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ LesliAudit::Engine.routes.draw do
34
+ root to: "dashboards#show"
35
+ resource :dashboard, only: [:show]
36
+ resources :analytics, only: [:index] do
37
+ collection do
38
+ get :trends
39
+ get :visitors
40
+ get :controllers
41
+ get :devices
42
+ get :users
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,42 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+ class CreateLesliAuditAccounts < ActiveRecord::Migration[6.0]
34
+ def change
35
+ create_table :lesli_audit_accounts do |t|
36
+ t.integer :status
37
+ t.datetime :deleted_at, index: true
38
+ t.timestamps
39
+ end
40
+ add_reference(:lesli_audit_accounts, :account, foreign_key: { to_table: :lesli_accounts })
41
+ end
42
+ end