chaltron 0.3.2 → 1.0.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.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +2 -1
  3. data/app/assets/javascripts/chaltron.js +7 -5
  4. data/app/assets/javascripts/chaltron/datatables.js.coffee +2 -2
  5. data/app/assets/javascripts/chaltron/navbar.js.coffee +46 -0
  6. data/app/assets/javascripts/dataTables/dataTables.bootstrap4.min.js +8 -0
  7. data/app/assets/stylesheets/chaltron.scss +9 -9
  8. data/app/assets/stylesheets/chaltron/layout.scss +3 -29
  9. data/app/assets/stylesheets/chaltron/logs.scss +5 -0
  10. data/app/controllers/chaltron/ldap_controller.rb +5 -5
  11. data/app/controllers/chaltron/omniauth_callbacks_controller.rb +0 -1
  12. data/app/controllers/chaltron/sessions_controller.rb +0 -3
  13. data/app/controllers/chaltron/users_controller.rb +1 -3
  14. data/app/datatables/log_datatable.rb +3 -2
  15. data/app/helpers/chaltron/ldap_helper.rb +3 -3
  16. data/app/helpers/chaltron/logs_helper.rb +4 -13
  17. data/app/helpers/chaltron/users_helper.rb +20 -2
  18. data/app/helpers/chaltron_helper.rb +0 -16
  19. data/app/models/authorizable.rb +1 -1
  20. data/app/models/log.rb +10 -12
  21. data/app/models/user.rb +1 -5
  22. data/app/views/chaltron/ldap/multi_create.html.erb +39 -35
  23. data/app/views/chaltron/ldap/multi_new.html.erb +36 -30
  24. data/app/views/chaltron/ldap/search.html.erb +13 -10
  25. data/app/views/chaltron/logs/index.html.erb +22 -28
  26. data/app/views/chaltron/logs/show.html.erb +6 -6
  27. data/app/views/chaltron/users/_form.html.erb +8 -5
  28. data/app/views/chaltron/users/_side_filters.html.erb +10 -26
  29. data/app/views/chaltron/users/edit.html.erb +1 -1
  30. data/app/views/chaltron/users/index.html.erb +29 -31
  31. data/app/views/chaltron/users/new.html.erb +1 -1
  32. data/app/views/chaltron/users/self_edit.html.erb +27 -20
  33. data/app/views/chaltron/users/self_show.html.erb +8 -8
  34. data/app/views/chaltron/users/show.html.erb +10 -10
  35. data/app/views/devise/passwords/edit.html.erb +8 -7
  36. data/app/views/devise/passwords/new.html.erb +10 -7
  37. data/app/views/devise/sessions/_new_ldap.html.erb +17 -14
  38. data/app/views/devise/sessions/_new_local.html.erb +10 -7
  39. data/app/views/devise/sessions/new.html.erb +30 -25
  40. data/app/views/locales/en.yml +4 -4
  41. data/app/views/locales/it.yml +2 -2
  42. data/config/chaltron_navigation.rb +15 -23
  43. data/config/locales/en.yml +1 -6
  44. data/config/locales/it.yml +1 -6
  45. data/config/routes.rb +4 -5
  46. data/lib/chaltron.rb +1 -24
  47. data/lib/chaltron/bootstrap_form.rb +1 -1
  48. data/lib/chaltron/engine.rb +2 -3
  49. data/lib/chaltron/ldap/connection.rb +34 -93
  50. data/lib/chaltron/ldap/person.rb +3 -13
  51. data/lib/chaltron/ldap/user.rb +1 -5
  52. data/lib/chaltron/version.rb +1 -1
  53. data/lib/generators/chaltron/install_generator.rb +9 -3
  54. data/lib/generators/chaltron/templates/app/assets/stylesheets/home.scss +2 -20
  55. data/lib/generators/chaltron/templates/app/views/home/_carousel.html.erb +18 -18
  56. data/lib/generators/chaltron/templates/app/views/home/_faq.html.erb +10 -8
  57. data/lib/generators/chaltron/templates/app/views/home/_panel.html.erb +5 -7
  58. data/lib/generators/chaltron/templates/app/views/home/index.html.erb +12 -10
  59. data/lib/generators/chaltron/templates/app/views/home/test.html.erb +3 -5
  60. data/lib/generators/chaltron/templates/app/views/layouts/_footer.html.erb +7 -9
  61. data/lib/generators/chaltron/templates/app/views/layouts/_navbar.html.erb +8 -15
  62. data/lib/generators/chaltron/templates/config/initializers/chaltron.rb +4 -57
  63. data/lib/generators/chaltron/templates/config/navigation.rb +11 -10
  64. data/lib/templates/erb/scaffold/_form.html.erb +8 -5
  65. data/lib/templates/erb/scaffold/edit.html.erb +8 -8
  66. data/lib/templates/erb/scaffold/index.html.erb +15 -21
  67. data/lib/templates/erb/scaffold/new.html.erb +2 -6
  68. data/lib/templates/erb/scaffold/show.html.erb +9 -9
  69. metadata +24 -25
  70. data/app/assets/javascripts/dataTables/extras/dataTables.select.min.js +0 -23
  71. data/app/assets/stylesheets/dataTables/dataTables.bootstrap.css +0 -167
  72. data/app/assets/stylesheets/dataTables/extras/select.dataTables.css +0 -100
  73. data/app/models/application_record.rb +0 -3
  74. data/app/views/chaltron/logs/_log.html.erb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 78e7ad0467fc7cd5cb0c3f25f464ce436a3dbbc0be719abdc45c7a385243ebe1
4
- data.tar.gz: 43f59c6078ba453dccab6430113b76161d241f6d612efb05af1fc896d08e406a
2
+ SHA1:
3
+ metadata.gz: 4e9ae962f2dd9c241da700b59ffff814b0e10483
4
+ data.tar.gz: 738cf12df8205c411047c8e245e4580d86b95204
5
5
  SHA512:
6
- metadata.gz: fe8451fed953ce40aa38a3f8353186f0679ea52809ee283fa19adc36a496648219782c209de7b0fdddcc3b612532a4e5246395aad087ede4a6968f297752f7cc
7
- data.tar.gz: 57daa0f86e0b61a34975660476deb35bb5ef59e567a31bc897deb8af4027653c360f1969a17357f294be014ed198df5353ab8934f51b531982b1eeb472435b03
6
+ metadata.gz: ab99ee8301b42f336a2f9f844978787b456fc8ada3bc422cf49ad244a93396a9f63dcbefc7748f7438e535d27de11ee30d979062aade8d5ef98e267e0f34c73e
7
+ data.tar.gz: 3120ad2fd6985cbeda1e4ace7e7e0eaf319ee6e8cc81af4a80d2907f0f520e5952609bb192cbba90d1ab6f0a38dd98c72ef67fc37064310c2c290bb9b6ccddae
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- # Chaltron [![Gem Version](https://badge.fury.io/rb/chaltron.svg)](http://badge.fury.io/rb/chaltron) [![Build Status](https://travis-ci.org/vicvega/chaltron.svg?branch=master)](http://travis-ci.org/vicvega/chaltron)
1
+ # Chaltron [![Gem Version](https://badge.fury.io/rb/chaltron.svg)](http://badge.fury.io/rb/chaltron) [![Build Status](https://travis-ci.org/vicvega/chaltron.svg?branch=master)](http://travis-ci.org/vicvega/chaltron) [![Dependency Status](https://gemnasium.com/vicvega/chaltron.svg)](https://gemnasium.com/vicvega/chaltron)
2
+
2
3
  [![Coverage Status](https://coveralls.io/repos/vicvega/chaltron/badge.svg?branch=master&service=github)](https://coveralls.io/github/vicvega/chaltron?branch=master)
3
4
  [![Code Climate](https://codeclimate.com/github/vicvega/chaltron/badges/gpa.svg)](https://codeclimate.com/github/vicvega/chaltron)
4
5
  [![PullReview stats](https://www.pullreview.com/github/vicvega/chaltron/badges/master.svg?)](https://www.pullreview.com/github/vicvega/chaltron/reviews/master)
@@ -1,10 +1,12 @@
1
1
  //= require jquery
2
2
  //= require jquery_ujs
3
- //= require bootstrap-sprockets
4
- //= require dataTables/jquery.dataTables
5
- //= require dataTables/extras/dataTables.responsive
6
- //= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
7
- //= require dataTables/extras/dataTables.select.min
3
+ //= require popper
4
+ //= require bootstrap
5
+ //= require datatables/jquery.dataTables
6
+ //= require datatables/dataTables.bootstrap4
7
+ //= require datatables/extensions/Responsive/dataTables.responsive
8
+ //= require datatables/extensions/Responsive/responsive.bootstrap4
9
+ //= require datatables/extensions/Select/dataTables.select
8
10
  //= require nprogress
9
11
  //= require nprogress-turbolinks
10
12
  //= require nprogress-ajax
@@ -20,7 +20,6 @@ class DataTableBuilder
20
20
  columnDefs: [
21
21
  { orderable: false, className: 'select-checkbox', targets: 0 }
22
22
  ]
23
- dom: 'T<"clear">lfrtip'
24
23
  select: { style: 'multi', info: false }
25
24
  })
26
25
 
@@ -39,7 +38,8 @@ class DataTableBuilder
39
38
  { data: 'category', searchable: false }
40
39
  ]
41
40
  columnDefs: [
42
- { orderSequence: ['desc', 'asc'], targets: [ 1 ] }
41
+ { orderSequence: ['desc', 'asc'], targets: [ 1 ] },
42
+ { className: 'text-center', "targets": [ 0 ] }
43
43
  ]
44
44
  })
45
45
 
@@ -0,0 +1,46 @@
1
+ class NavbarBuilder
2
+
3
+ render: ->
4
+ @prepend_class(i, 'navbar-nav mr-auto') for i in $('#navigation ul')
5
+ $('#navigation ul li').addClass('nav-item')
6
+ $('#navigation ul li a').addClass('nav-link')
7
+ $('#navigation ul li ul').parent().addClass('dropdown')
8
+ $('#navigation ul li.dropdown').children('a').addClass('dropdown-toggle').attr(
9
+ {id: 'navbarDropdown', role: 'button', 'aria-haspopup': 'true', 'aria-expanded': 'false', 'data-toggle': 'dropdown'}
10
+ )
11
+ @render_dropdown_menu i for i in $('#navigation ul li.dropdown')
12
+ @render_icon_a i for i in $('#navigation ul li a')
13
+
14
+ render_dropdown_menu: (item) ->
15
+ links = jQuery(item).find('ul li a')
16
+ jQuery(l).addClass('dropdown-item').removeClass('nav-link') for l in links
17
+ @render_dropdown_links (i) for i in jQuery(item).find('ul')
18
+
19
+ render_dropdown_links: (item) ->
20
+ el = jQuery(item)
21
+ links = el.find('li a')
22
+
23
+ klass = 'dropdown-menu'
24
+ klass += ' dropdown-menu-right' if el.hasClass('dropdown-menu-right')
25
+ div = $('<div></div>').addClass('dropdown-menu').attr('aria-labelledby': 'navbarDropdown').append(links)
26
+ el.replaceWith(div)
27
+
28
+ prepend_class: (item, klass) ->
29
+ el = jQuery(item)
30
+ if el.attr('class')
31
+ klass += " #{el.attr('class')}"
32
+ el.removeClass(jQuery(item).attr('class'))
33
+
34
+ el.addClass(klass)
35
+
36
+ if el.hasClass('justify-content-end')
37
+ el.removeClass('mr-auto')
38
+
39
+ render_icon_a: (item) ->
40
+ el = jQuery(item)
41
+ if el.attr('icon')
42
+ el.html("<i class=\"fa fa-fw fa-#{el.attr('icon')}\"></i>&nbsp;#{el.text()}")
43
+
44
+ $(document).on 'turbolinks:load', ->
45
+ navbar = new NavbarBuilder
46
+ navbar.render()
@@ -0,0 +1,8 @@
1
+ /*!
2
+ DataTables Bootstrap 3 integration
3
+ ©2011-2015 SpryMedia Ltd - datatables.net/license
4
+ */
5
+ (function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
6
+ renderer:"bootstrap"});b.extend(f.ext.classes,{sWrapper:"dataTables_wrapper container-fluid dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&
7
+ o.page()!=a.data.action&&o.page(a.data.action).draw("page")};l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="&#x2026;";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",{"class":t.sPageButton+" "+g,id:0===r&&
8
+ "string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#","aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex,"class":"page-link"}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f});
@@ -1,20 +1,17 @@
1
1
  // Bootstrap
2
- $font-size-base: 13px;
3
- $navbar-height: 40px;
4
-
5
- @import 'bootstrap-sprockets';
6
2
  @import 'bootstrap';
7
- @import 'bootstrap/theme';
8
3
 
9
4
  // font-awesome
10
5
  @import 'font-awesome-sprockets';
11
6
  @import 'font-awesome';
12
7
 
13
8
  // datatables
14
- @import 'dataTables/bootstrap/3/jquery.dataTables.bootstrap';
15
- @import 'dataTables/extras/dataTables.responsive';
16
- @import 'dataTables/extras/select.dataTables';
17
- //@import 'chaltron/datatables';
9
+ @import 'datatables/dataTables.bootstrap4';
10
+ @import 'datatables/extensions/Responsive/responsive.bootstrap4';
11
+ @import 'datatables/extensions/Select/select.bootstrap4';
12
+
13
+ // bootstrap_form
14
+ @import 'rails_bootstrap_forms';
18
15
 
19
16
  // minor fix
20
17
  .dataTables_wrapper .dataTables_filter input {
@@ -30,3 +27,6 @@ $navbar-height: 40px;
30
27
 
31
28
  // Core CSS
32
29
  @import 'chaltron/layout';
30
+
31
+ // logs
32
+ @import 'chaltron/logs';
@@ -1,10 +1,9 @@
1
1
  body {
2
- // background-color: #E1E1E1;
3
2
  }
4
3
 
5
4
  div#content {
6
- margin-top: 40px;
7
- margin-bottom: 40px;
5
+ margin-top: 2.5rem;
6
+ margin-bottom: 2.5rem;
8
7
  }
9
8
 
10
9
  /**
@@ -16,7 +15,7 @@ div#content {
16
15
  margin: 0;
17
16
  text-align: center;
18
17
  position: fixed;
19
- top: 40px;
18
+ top: 2.5rem;
20
19
  width: 100%;
21
20
  opacity: 0.8;
22
21
  z-index: 100;
@@ -35,14 +34,6 @@ div#content {
35
34
  @include form-box(650px);
36
35
  }
37
36
 
38
- /**
39
- * Navbar tabs
40
- *
41
- */
42
- .nav-tabs {
43
- margin-bottom: 15px;
44
- }
45
-
46
37
  #nprogress .spinner {
47
38
  display: block;
48
39
  position: fixed;
@@ -50,20 +41,3 @@ div#content {
50
41
  top: 12px;
51
42
  right: 5px;
52
43
  }
53
-
54
- /**
55
- * Scaffold
56
- *
57
- */
58
- .side-filters fieldset {
59
- margin-bottom: 15px;
60
- }
61
-
62
- .form-actions {
63
- background-color: whitesmoke;
64
- border-top: 1px solid #e5e5e5;
65
- margin-bottom: 18px;
66
- margin-top: 18px;
67
- padding-bottom: 18px;
68
- padding-top: 18px;
69
- }
@@ -0,0 +1,5 @@
1
+ table#logs{
2
+ th.severity {
3
+ width: 4rem
4
+ }
5
+ }
@@ -15,11 +15,11 @@ class Chaltron::LdapController < ApplicationController
15
15
  userid = params[:userid]
16
16
  if userid.present?
17
17
  entry = Chaltron::LDAP::Person.find_by_uid(userid)
18
- @entries << entry
18
+ @entries << entry unless entry.nil?
19
19
  else
20
- @entries = Chaltron::LDAP::Person.find_by_fields(find_options)
20
+ res = Chaltron::LDAP::Person.find_by_fields(find_options)
21
+ @entries = res
21
22
  end
22
- @entries.compact!
23
23
  end
24
24
 
25
25
  def multi_create
@@ -41,12 +41,12 @@ class Chaltron::LdapController < ApplicationController
41
41
  private
42
42
  def find_options
43
43
  department = params[:department]
44
- name = params[:lastname]
44
+ name = params[:fullname]
45
45
  limit = params[:limit].to_i
46
46
 
47
47
  ret = {}
48
48
  ret[:department] = "*#{department}*" unless department.blank?
49
- ret[:last_name] = "*#{name}*" unless name.blank?
49
+ ret[:cn] = "*#{name}*" unless name.blank?
50
50
  ret[:limit] = limit.zero? ? default_limit : limit
51
51
  ret
52
52
  end
@@ -12,7 +12,6 @@ module Chaltron
12
12
  # We only find ourselves here
13
13
  # if the authentication to LDAP was successful.
14
14
  user = Chaltron::LDAP::User.find_or_create(oauth, Chaltron.ldap_allow_all)
15
- user = Chaltron.ldap_after_authenticate.call(user, Chaltron::LDAP::Connection.new)
16
15
  if user.nil?
17
16
  redirect_to root_url, alert: I18n.t('chaltron.not_allowed_to_sign_in')
18
17
  else
@@ -1,5 +1,3 @@
1
- require 'chaltron/ldap/connection'
2
-
3
1
  class Chaltron::SessionsController < Devise::SessionsController
4
2
  after_action :after_login, only: :create
5
3
  before_action :before_logout, only: :destroy
@@ -11,7 +9,6 @@ class Chaltron::SessionsController < Devise::SessionsController
11
9
  end
12
10
 
13
11
  def before_logout
14
- Chaltron.ldap_before_logout.call(current_user, Chaltron::LDAP::Connection.new) if current_user.ldap_user?
15
12
  info I18n.t('chaltron.logs.logout', user: current_user.display_name)
16
13
  end
17
14
  end
@@ -81,9 +81,7 @@ class Chaltron::UsersController < ApplicationController
81
81
  end
82
82
 
83
83
  def self_update_params
84
- allowed = [:fullname]
85
- allowed << :email if current_user.provider.nil?
86
- params.require(:user).permit(allowed)
84
+ params.require(:user).permit(:email, :fullname)
87
85
  end
88
86
 
89
87
  def filter_params
@@ -1,6 +1,6 @@
1
1
  class LogDatatable < AjaxDatatablesRails::Base
2
2
 
3
- def_delegators :@view, :link_to, :tag_label, :bootstrap_severity, :current_ability
3
+ def_delegators :@view, :link_to, :content_tag, :bootstrap_severity, :current_ability
4
4
 
5
5
  def view_columns
6
6
  # Declare strings in this format: ModelName.column_name
@@ -18,7 +18,8 @@ class LogDatatable < AjaxDatatablesRails::Base
18
18
  def data
19
19
  records.map do |log|
20
20
  {
21
- severity: tag_label(I18n.t("chaltron.logs.severity.#{log.severity}"), bootstrap_severity(log.severity)),
21
+ severity: content_tag(:span, I18n.t("chaltron.logs.severity.#{log.severity}"),
22
+ class: "badge badge-#{bootstrap_severity(log.severity)}"),
22
23
  date: I18n.l(log.created_at, format: :short),
23
24
  message: link_to(log.message, log),
24
25
  category: I18n.t("chaltron.logs.category.#{log.category}")
@@ -2,8 +2,8 @@ module Chaltron::LdapHelper
2
2
 
3
3
  def display_entry_name(entry)
4
4
  if User.exists?(username: entry.username)
5
- (entry.name + '&nbsp;').html_safe +
6
- tag_label(I18n.t('chaltron.users.already_present'), :danger)
5
+ (entry.name + '&nbsp').html_safe +
6
+ content_tag(:span, I18n.t('chaltron.users.already_present'), class: 'badge badge-danger')
7
7
  else
8
8
  entry.name
9
9
  end
@@ -12,7 +12,7 @@ module Chaltron::LdapHelper
12
12
  def display_entry_email(entry)
13
13
  mail = entry.email
14
14
  if mail.blank?
15
- tag_label(I18n.t('chaltron.users.missing_field'), :danger)
15
+ content_tag(:span, I18n.t('chaltron.users.missing_field'), class: 'badge badge-danger')
16
16
  else
17
17
  mail
18
18
  end
@@ -1,19 +1,10 @@
1
1
  module Chaltron::LogsHelper
2
- def display_panel(log, &block)
3
- klass = "panel panel-#{bootstrap_severity(log.severity)}"
4
- content_tag :div, capture(&block), class: klass
5
- end
6
-
7
2
  def bootstrap_severity(severity)
8
3
  case severity.to_s
9
- when 'emerg', 'alert', 'crit', 'err'
10
- 'danger'
11
- when 'warning'
12
- 'warning'
13
- when 'debug'
14
- 'info'
15
- else
16
- 'primary'
4
+ when 'info' then 'primary'
5
+ when 'error' then 'danger'
6
+ when 'debug' then 'info'
7
+ else 'default'
17
8
  end
18
9
  end
19
10
  end
@@ -1,10 +1,28 @@
1
1
  module Chaltron::UsersHelper
2
2
  def display_username(user)
3
3
  if user == current_user
4
- link_to(user.username, user) + '&nbsp;'.html_safe +
5
- tag_label(I18n.t('chaltron.users.it_s_you'), :success)
4
+ link_to(user.username, user) + '&nbsp'.html_safe +
5
+ content_tag(:span, I18n.t('chaltron.users.it_s_you'), class: 'badge badge-success')
6
6
  else
7
7
  link_to user.username, user
8
8
  end
9
9
  end
10
+
11
+ def display_side_filter_link(url, active, text, count)
12
+
13
+ klass = 'list-group-item list-group-item-action'
14
+ klass += ' active' if active
15
+
16
+ badge_klass = 'badge badge-pill float-right'
17
+ if active
18
+ badge_klass += ' badge-light'
19
+ else
20
+ badge_klass += ' badge-primary'
21
+ end
22
+
23
+ link_to url, class: klass do
24
+ content_tag(:span, count, class: badge_klass) + text
25
+ end
26
+
27
+ end
10
28
  end
@@ -33,17 +33,6 @@ module ChaltronHelper
33
33
  end
34
34
  end
35
35
 
36
- #
37
- # Badge and label helpers
38
- #
39
- def badge(*args)
40
- badge_label(:badge, *args)
41
- end
42
-
43
- def tag_label(*args)
44
- badge_label(:label, *args)
45
- end
46
-
47
36
  #
48
37
  # Get current revision
49
38
  #
@@ -61,9 +50,4 @@ module ChaltronHelper
61
50
  end
62
51
  end
63
52
 
64
- def badge_label(what, value, type = nil)
65
- klass = [what]
66
- klass << "#{what}-#{type}" if type.present?
67
- content_tag :span, value, class: "#{klass.join(' ')}"
68
- end
69
53
  end
@@ -1,6 +1,6 @@
1
1
  module Authorizable
2
2
  def roles=(roles)
3
- self.roles_mask = (roles & Chaltron.roles).map { |r| 2**Chaltron.roles.index(r) }.inject(:+)
3
+ self.roles_mask = (roles & Chaltron.roles).map { |r| 2**Chaltron.roles.index(r) }.sum
4
4
  end
5
5
 
6
6
  def roles
@@ -1,24 +1,22 @@
1
- class Log < ApplicationRecord
2
- Severities = %w( emerg alert crit err warning notice info debug )
1
+ class Log < ActiveRecord::Base
2
+ Severities = %w( info debug error )
3
3
 
4
4
  validates_presence_of :severity, :message
5
5
  validates_inclusion_of :severity, in: Severities
6
6
 
7
- before_validation :change_severity
8
-
9
7
  after_create :to_syslog if Chaltron.enable_syslog
10
8
 
11
9
  private
12
-
13
- def change_severity
14
- self.severity = :emerg if self.severity && self.severity.to_sym == :panic
15
- self.severity = :err if self.severity && self.severity.to_sym == :error
16
- self.severity = :warning if self.severity && self.severity.to_sym == :warn
17
- end
18
-
19
10
  def to_syslog
11
+ syslog_method =
12
+ case self.severity
13
+ when 'info' then :notice
14
+ when 'debug' then :debug
15
+ when 'error' then :err
16
+ else :info
17
+ end
20
18
  Syslog.open(Rails.application.class.parent.to_s, Syslog::LOG_PID, Chaltron.syslog_facility) do |s|
21
- s.send(self.severity.to_sym, self.category.upcase + ' - ' + self.message)
19
+ s.send(syslog_method, self.category.upcase + ' - ' + self.message)
22
20
  end
23
21
  end
24
22
 
@@ -1,4 +1,4 @@
1
- class User < ApplicationRecord
1
+ class User < ActiveRecord::Base
2
2
  include Authorizable
3
3
  # Include default devise modules. Others available are:
4
4
  # :registerable, :confirmable, :lockable and :omniauthable
@@ -26,8 +26,4 @@ class User < ApplicationRecord
26
26
  end
27
27
  end
28
28
 
29
- def ldap_user?
30
- provider == 'ldap'
31
- end
32
-
33
29
  end