usman 0.1.5 → 0.1.6dev2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +48 -16
  3. data/app/controllers/usman/admin/base_controller.rb +22 -0
  4. data/app/controllers/usman/admin/dashboard_controller.rb +1 -1
  5. data/app/controllers/usman/admin/features_controller.rb +4 -1
  6. data/app/controllers/usman/admin/permissions_controller.rb +9 -15
  7. data/app/controllers/usman/admin/resource_controller.rb +3 -1
  8. data/app/controllers/usman/admin/roles_controller.rb +4 -2
  9. data/app/controllers/usman/admin/user_roles_controller.rb +142 -0
  10. data/app/controllers/usman/admin/users_controller.rb +5 -2
  11. data/app/controllers/usman/application_controller.rb +0 -4
  12. data/app/controllers/usman/sessions_controller.rb +5 -2
  13. data/app/helpers/usman/authentication_helper.rb +35 -25
  14. data/app/models/feature.rb +50 -46
  15. data/app/models/image/feature_image.rb +1 -1
  16. data/app/models/image/profile_picture.rb +1 -1
  17. data/app/models/permission.rb +3 -8
  18. data/app/models/role.rb +4 -7
  19. data/app/models/user.rb +81 -103
  20. data/app/models/usman/application_record.rb +3 -0
  21. data/app/services/usman/authentication_service.rb +4 -3
  22. data/app/uploaders/profile_picture_uploader.rb +2 -1
  23. data/app/views/layouts/kuppayam/_header.html.erb +1 -1
  24. data/app/views/layouts/kuppayam/_navbar.html.erb +1 -1
  25. data/app/views/layouts/kuppayam/_sidebar.html.erb +8 -7
  26. data/app/views/usman/admin/dashboard/index.html.erb +0 -1
  27. data/app/views/usman/admin/features/_form.html.erb +5 -2
  28. data/app/views/usman/admin/features/_index.html.erb +4 -1
  29. data/app/views/usman/admin/features/index.html.erb +20 -3
  30. data/app/views/usman/admin/permissions/_show.html.erb +2 -10
  31. data/app/views/usman/admin/permissions/index.html.erb +20 -3
  32. data/app/views/usman/admin/roles/_form.html.erb +1 -1
  33. data/app/views/usman/admin/roles/_index.html.erb +3 -3
  34. data/app/views/usman/admin/roles/_row.html.erb +2 -2
  35. data/app/views/usman/admin/roles/_show.html.erb +41 -7
  36. data/app/views/usman/admin/roles/index.html.erb +22 -3
  37. data/app/views/usman/admin/user_roles/_form.html.erb +24 -0
  38. data/app/views/usman/admin/user_roles/_index.html.erb +59 -0
  39. data/app/views/usman/admin/user_roles/_row.html.erb +34 -0
  40. data/app/views/usman/admin/users/_index.html.erb +22 -16
  41. data/app/views/usman/admin/users/_row.html.erb +4 -4
  42. data/app/views/usman/admin/users/_show.html.erb +1 -1
  43. data/app/views/usman/admin/users/index.html.erb +4 -2
  44. data/app/views/usman/sessions/_form.html.erb +19 -7
  45. data/app/views/usman/sessions/sign_in.html.erb +1 -1
  46. data/config/initializers/overide_kuppayam_controllers.rb +74 -0
  47. data/config/locales/kuppayam/authentication.en.yml +4 -1
  48. data/config/routes.rb +3 -1
  49. data/db/import_data/dummy/features.csv +7 -0
  50. data/db/import_data/dummy/permissions.csv +18 -1
  51. data/db/import_data/dummy/roles.csv +5 -0
  52. data/db/import_data/dummy/users.csv +7 -3
  53. data/db/import_data/features.csv +7 -0
  54. data/db/import_data/permissions.csv +1 -30
  55. data/db/import_data/roles.csv +5 -0
  56. data/db/migrate/20170000000100_create_users.rb +1 -1
  57. data/db/migrate/20170000000101_create_features.rb +1 -1
  58. data/db/migrate/20170000000102_create_roles.rb +1 -1
  59. data/db/migrate/20170728095744_create_otp_registrations.rb +17 -0
  60. data/lib/tasks/usman/all.rake +34 -10
  61. data/lib/{tasks/usman → temp}/features.rake +3 -6
  62. data/lib/{tasks/usman → temp}/permissions.rake +3 -5
  63. data/lib/temp/roles.rake +24 -0
  64. data/lib/{tasks/usman → temp}/users.rake +3 -5
  65. data/lib/usman/engine.rb +2 -3
  66. data/lib/usman/version.rb +1 -1
  67. metadata +27 -45
  68. data/app/views/usman/admin/features/_action_buttons.html.erb +0 -0
  69. data/app/views/usman/admin/features/temp/create.js.erb +0 -29
  70. data/app/views/usman/admin/features/temp/destroy.js.erb +0 -16
  71. data/app/views/usman/admin/features/temp/edit.js.erb +0 -7
  72. data/app/views/usman/admin/features/temp/index.js.erb +0 -8
  73. data/app/views/usman/admin/features/temp/new.js.erb +0 -7
  74. data/app/views/usman/admin/features/temp/row.js.erb +0 -10
  75. data/app/views/usman/admin/features/temp/show.js.erb +0 -8
  76. data/app/views/usman/admin/features/temp/update.js.erb +0 -16
  77. data/app/views/usman/admin/permissions/temp/create.js.erb +0 -29
  78. data/app/views/usman/admin/permissions/temp/destroy.js.erb +0 -22
  79. data/app/views/usman/admin/permissions/temp/edit.js.erb +0 -4
  80. data/app/views/usman/admin/permissions/temp/index.js.erb +0 -14
  81. data/app/views/usman/admin/permissions/temp/new.js.erb +0 -4
  82. data/app/views/usman/admin/permissions/temp/row.js.erb +0 -24
  83. data/app/views/usman/admin/permissions/temp/show.js.erb +0 -13
  84. data/app/views/usman/admin/permissions/temp/update.js.erb +0 -29
  85. data/db/import_data/dummy/images/users/guna.neweast.png +0 -0
  86. data/db/import_data/dummy/images/users/junaid.ramzan.jpg +0 -0
  87. data/db/import_data/dummy/images/users/kpvarma.png +0 -0
  88. data/db/import_data/dummy/images/users/stephen.price.png +0 -0
  89. data/db/import_data/dummy/images/users/vinodh.jpg +0 -0
  90. data/db/import_data/images/users/junaid.ramzan.jpg +0 -0
  91. data/db/import_data/images/users/kpvarma.png +0 -0
  92. data/db/import_data/images/users/vinodh.jpg +0 -0
  93. data/lib/usman/extras/import_error_handler.rb +0 -79
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a630b45bb4de548d1b215cce4650ee42985682a1
4
- data.tar.gz: b634c8f8410fc48d28e622f823efdfb546f86b15
3
+ metadata.gz: 9ec7d0671d92ce351c4882f0bbe8857fdcb18ab2
4
+ data.tar.gz: 81c5d13af42fd0ae271e5c4a68ec6fe117164154
5
5
  SHA512:
6
- metadata.gz: 190ac35f562e78b71ed702b800c543a307155fd558d0014b5ad38480335d799f305e0fdd12a35b3bcac7c03160222b0c590226c2859eea8af9ac69a1c7169bbc
7
- data.tar.gz: e018c0a66b0b40fe71e42d9251cfa3017aef88584460b39b5ba9f61886d4f1f1ad57f91ce1205c8da83bedc12e9dfa585e39b8a38d17a992d2316d4cfc34e047
6
+ metadata.gz: 67cd7e26738632cc4a3fc1ca72f3cc4c512b2578ee1a988a950f331e746b3510b8a4dee7102bd4a60579f884339691df99edda6a8d5abb00fec7e0cac35a5345
7
+ data.tar.gz: da160eabaa5d3927601dc1b1cd546ff569b07ba47ae773cb1e66efec27c58c25f41a87248f5fd97ea9af82c069aa4245c623c26fdfba3d114c1874e2f9257248
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Usman
2
- Simple User & Feature Permission Management
3
2
 
4
- ## Usage
3
+ Simple User & Feature Permission Management with APIs.
4
+
5
5
  Usman is a mountable plugin and it requires another full pluggin named kuppayam to run. Kuppayam offers usman the UI skin with basic modules for running like Polymorphic Image and Document Models etc.
6
6
 
7
7
  ## Installation
@@ -21,23 +21,19 @@ Or install it yourself as:
21
21
  $ gem install usman
22
22
  ```
23
23
 
24
- # Installation Instructions
24
+ # Usage
25
25
 
26
- ## Copy the migrations
26
+ ## Installing the kuppayam & usman migrations
27
27
 
28
- Copy the migrations from the engines you are using
29
- Run the below command
28
+ Usman uses kuppayam skins and hence it requires the basic migrations from kuppayam to run
29
+ Run the below command to copy the migrations from the kuppayam engine.
30
30
 
31
31
  ```bash
32
32
  $ bundle exec rake railties:install:migrations
33
33
  ```
34
34
 
35
- This will copy migrations from kuppayam and usman engines
36
- which will have migrations to create images, documents, users, features and permissions respectively.
37
-
38
- ## Create Dummy Data
35
+ This will copy migrations from kuppayam and usman engines which will have migrations to create images, documents, users, features and permissions respectively.
39
36
 
40
- run rake task for loading dummy data for users and features to start with.
41
37
 
42
38
  ## Mount the engine
43
39
 
@@ -49,23 +45,59 @@ mount Usman::Engine => "/"
49
45
 
50
46
  open browser and go to /sign_in url
51
47
 
48
+ ## Railties order
49
+
50
+ Specify the railties order if required in main application.rb
51
+
52
+ ``
53
+ config.autoload_paths << "app/services"
54
+ config.railties_order = [:main_app, Usman::Engine, Kuppayam::Engine, :all]
55
+ ```
52
56
 
57
+ # Seeding Data
53
58
 
59
+ run rake task for loading dummy data for users and features to start with.
54
60
 
55
61
  ```bash
56
62
  $ bundle exec rake usman:import:dummy:all verbose=false
57
63
  ```
58
64
 
65
+ ["users", "features", "permissions", "roles"]
59
66
 
67
+ You could also do it individually but the above command will run in the following order - users, features, permissions, roles. This order is important as features need users to be imported first.
60
68
 
61
- ## Specify the railties order if required
69
+ ```bash
70
+ $ bundle exec rake usman:import:dummy:users verbose=false
71
+ $ bundle exec rake usman:import:dummy:features verbose=false
72
+ $ bundle exec rake usman:import:dummy:permissions verbose=false
73
+ $ bundle exec rake usman:import:dummy:roles verbose=false
74
+ ```
62
75
 
63
- in main application.rb
76
+ # Import Data
64
77
 
78
+ You could override the seed files with your data.
79
+ just create db/import_data in your project folder and create the following files filled with your data in the required format (checkout the dummy csvs in usman db/import_data/dummy/features.csv) for the columns required
80
+
81
+ for e.g:
82
+
83
+ create users.csv in db/import_data/ foler and fill data in it and run
84
+
85
+ ```bash
86
+ $ bundle exec rake usman:import:users verbose=false
65
87
  ```
66
- config.autoload_paths << "app/services"
67
- config.railties_order = [:main_app, Usman::Engine, Kuppayam::Engine, :all]
68
- ```
88
+
89
+ ## Testing the gem
90
+
91
+ cd spec/dummy
92
+ rails db:create db:migrate
93
+
94
+ rails s -p <port>
95
+
96
+ ## Running rspec
97
+ rails db:create db:migrate RAILS_ENV
98
+
99
+ # run rspec from the rails root folder and not from dummy folder as spec helper has been linked to dummy.
100
+ rspec
69
101
 
70
102
 
71
103
  ## Contributing
@@ -5,6 +5,7 @@ module Usman
5
5
  layout 'kuppayam/admin'
6
6
 
7
7
  before_action :require_user
8
+ before_action :require_site_admin
8
9
 
9
10
  private
10
11
 
@@ -12,6 +13,27 @@ module Usman
12
13
  set_title("Usman Admin | User Management Module")
13
14
  end
14
15
 
16
+ def require_site_admin
17
+ return true if @current_user && @current_user.super_admin?
18
+ unless @current_user && @current_user.has_role?("Site Admin")
19
+ respond_to do |format|
20
+ format.html {
21
+ #text = "#{I18n.t("authentication.permission_denied.heading")}: #{I18n.t("authentication.permission_denied.message")}"
22
+ #set_flash_message(text, :error, false) if defined?(flash) && flash
23
+ redirect_after_unsuccessful_authentication
24
+ }
25
+ format.js {
26
+ @params_hsh = {}
27
+ @params_hsh[:client_app] = params[:client_app] if params[:client_app]
28
+ @params_hsh[:redirect_back_url] = params[:redirect_back_url] if params[:redirect_back_url]
29
+ @params_hsh[:requested_url] = request.original_url if request.get?
30
+
31
+ render(:partial => 'usman/sessions/sign_in.js.erb', :handlers => [:erb], :formats => [:js])
32
+ }
33
+ end
34
+ end
35
+ end
36
+
15
37
  def configure_filter_param_mapping
16
38
  @filter_param_mapping = default_filter_param_mapping
17
39
  @filter_param_mapping[:super_admin] = :sa
@@ -10,7 +10,7 @@ module Usman
10
10
 
11
11
  def breadcrumbs_configuration
12
12
  {
13
- heading: "Usman Dashboard",
13
+ heading: "User Dashboard",
14
14
  description: "A Quick view of users and roles",
15
15
  links: [{name: "Dashboard", link: admin_dashboard_path, icon: 'fa-dashboard'}]
16
16
  }
@@ -54,6 +54,8 @@ module Usman
54
54
 
55
55
  def resource_controller_configuration
56
56
  {
57
+ page_title: "Features",
58
+ js_view_path: "/kuppayam/workflows/parrot",
57
59
  view_path: "/usman/admin/features"
58
60
  }
59
61
  end
@@ -61,9 +63,10 @@ module Usman
61
63
  def breadcrumbs_configuration
62
64
  {
63
65
  heading: "Manage Features",
66
+ icon: "lincons-diamond",
64
67
  description: "Listing all Features",
65
68
  links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
66
- {name: "Manage Features", link: admin_permissions_path, icon: 'fa-calendar', active: true}]
69
+ {name: "Manage Features", link: admin_features_path, icon: 'fa-calendar', active: true}]
67
70
  }
68
71
  end
69
72
 
@@ -2,29 +2,20 @@ module Usman
2
2
  module Admin
3
3
  class PermissionsController < ResourceController
4
4
 
5
- def index
6
- @heading = "Manage Permissions"
7
- @description = "Listing all permissions"
8
- @links = [{name: "Dashboard", link: admin_dashboard_path, icon: 'fa-home'},
9
- {name: "Manage Permissions", link: admin_permissions_path, icon: 'fa-user', active: true}]
10
- super
11
- end
12
-
13
5
  def create
14
- @permission = Permission.where(" user_id = ? AND feature_id = ? ", permitted_params[:user_id], permitted_params[:feature_id]).first || Permission.new
6
+ @permission = @r_object = Permission.where(" user_id = ? AND feature_id = ? ", permitted_params[:user_id], permitted_params[:feature_id]).first || Permission.new
15
7
  @permission.assign_attributes(permitted_params)
16
- save_resource(@permission)
17
-
8
+ save_resource
18
9
  get_collections
19
10
  end
20
11
 
21
12
  def update
22
- @permission = Permission.find_by_id(params[:id])
13
+ @permission = @r_object = Permission.find_by_id(params[:id])
23
14
  # The form will not submit can_create 0 if it is not selected
24
15
  # hence making it false by default and letting it update by itself.
25
16
  @permission.assign_attributes({"can_create": "0", "can_read": "0", "can_update": "0", "can_delete": "0"})
26
17
  @permission.assign_attributes(permitted_params)
27
- save_resource(@permission)
18
+ save_resource
28
19
  get_collections
29
20
  end
30
21
 
@@ -36,7 +27,7 @@ module Usman
36
27
  parse_filters
37
28
  apply_filters
38
29
 
39
- @permissions = @relation.includes(:user, :feature).page(@current_page).per(@per_page)
30
+ @permissions = @r_objects = @relation.includes(:user, :feature).page(@current_page).per(@per_page)
40
31
 
41
32
  return true
42
33
  end
@@ -65,13 +56,16 @@ module Usman
65
56
 
66
57
  def resource_controller_configuration
67
58
  {
68
- view_path: "/demo/permissions"
59
+ page_title: "Permissions",
60
+ js_view_path: "/kuppayam/workflows/parrot",
61
+ view_path: "/usman/admin/permissions"
69
62
  }
70
63
  end
71
64
 
72
65
  def breadcrumbs_configuration
73
66
  {
74
67
  heading: "Manage Permissions",
68
+ icon: "fa-lock",
75
69
  description: "Listing all Permissions",
76
70
  links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
77
71
  {name: "Manage Permissions", link: admin_permissions_path, icon: 'fa-calendar', active: true}]
@@ -4,7 +4,9 @@ module Usman
4
4
 
5
5
  include ResourceHelper
6
6
 
7
- before_action :configure_resource_controller
7
+ before_action :require_user
8
+ before_action :require_site_admin
9
+ before_action :configure_resource_controller
8
10
 
9
11
  def resource_url(obj)
10
12
  url_for([:admin, obj])
@@ -18,7 +18,7 @@ module Usman
18
18
  def apply_filters
19
19
  @relation = @relation.search(@query) if @query
20
20
 
21
- @order_by = "created_at desc" unless @order_by
21
+ @order_by = "name ASC" unless @order_by
22
22
  @relation = @relation.order(@order_by)
23
23
  end
24
24
 
@@ -39,7 +39,8 @@ module Usman
39
39
 
40
40
  def resource_controller_configuration
41
41
  {
42
- js_view_path: "/kuppayam/workflows/parrot",
42
+ page_title: "Roles",
43
+ js_view_path: "/kuppayam/workflows/peacock",
43
44
  view_path: "/usman/admin/roles"
44
45
  }
45
46
  end
@@ -47,6 +48,7 @@ module Usman
47
48
  def breadcrumbs_configuration
48
49
  {
49
50
  heading: "Manage Roles",
51
+ icon: "fa-lock",
50
52
  description: "Listing all Roles",
51
53
  links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
52
54
  {name: "Manage Roles", link: admin_roles_path, icon: 'fa-calendar', active: true}]
@@ -0,0 +1,142 @@
1
+ module Usman
2
+ module Admin
3
+ class UserRolesController < ResourceController
4
+
5
+ before_action :get_role
6
+
7
+ def index
8
+ get_collections
9
+ respond_to do |format|
10
+ format.html {}
11
+ format.js {
12
+ js_view_path = @resource_options && @resource_options[:js_view_path] ? "#{@resource_options[:js_view_path]}/index" : :index
13
+ render js_view_path
14
+ }
15
+ end
16
+ end
17
+
18
+ def show
19
+ @user = @r_object = @resource_options[:class].find_by_id(params[:id])
20
+ set_notification(false, I18n.t('status.error'), I18n.t('status.not_found', item: default_item_name.titleize)) unless @r_object
21
+ render_accordingly
22
+ end
23
+
24
+ def new
25
+ @user = User.new
26
+ render_accordingly
27
+ end
28
+
29
+ def create
30
+ @user = @r_object = User.find_by_id(permitted_params[:id])
31
+ if @user.add_role(@role)
32
+ set_notification(true, I18n.t('status.success'), "Role '#{@role.name}' has been assigned to the user '#{@user.name}'")
33
+ else
34
+ set_notification(false, I18n.t('status.success'), "Failed to assign the Role '#{@role.name}'")
35
+ end
36
+ action_name = params[:action].to_s == "create" ? "new" : "edit"
37
+ render_or_redirect(false, resource_url(@r_object), action_name)
38
+ end
39
+
40
+ def destroy
41
+ @user = @r_object = User.find_by_id(params[:id])
42
+ if @user
43
+ if @user.remove_role(@role)
44
+ get_collections
45
+ set_flash_message(I18n.t('success.deleted'), :success)
46
+ set_notification(true, I18n.t('status.success'), "Role '#{@role.name}' has been removed for the user '#{@user.name}'")
47
+ @destroyed = true
48
+ else
49
+ message = I18n.t('errors.failed_to_delete', item: default_item_name.titleize)
50
+ set_flash_message(message, :failure)
51
+ set_notification(false, I18n.t('status.success'), "Failed to remove the Role '#{@role.name}'")
52
+ @destroyed = false
53
+ end
54
+ else
55
+ set_notification(false, I18n.t('status.error'), I18n.t('status.not_found', item: default_item_name.titleize))
56
+ end
57
+
58
+ respond_to do |format|
59
+ format.html {}
60
+ format.js {
61
+ js_view_path = @resource_options && @resource_options[:js_view_path] ? "#{@resource_options[:js_view_path]}/destroy" : :destroy
62
+ render js_view_path
63
+ }
64
+ end
65
+
66
+ end
67
+
68
+ private
69
+
70
+ def get_role
71
+ @role = Role.find_by_id(params[:role_id])
72
+ end
73
+
74
+ def get_collections
75
+ @relation = @role.users.where("")
76
+
77
+ parse_filters
78
+ apply_filters
79
+
80
+ @users = @r_objects = @relation.page(@current_page).per(@per_page)
81
+
82
+ return true
83
+ end
84
+
85
+ def apply_filters
86
+ @relation = @relation.search(@query) if @query
87
+
88
+ @order_by = "name ASC" unless @order_by
89
+ @relation = @relation.order(@order_by)
90
+ end
91
+
92
+ def configure_filter_settings
93
+ @filter_settings = {
94
+ string_filters: [
95
+ { filter_name: :query }
96
+ ],
97
+ boolean_filters: [],
98
+ reference_filters: [],
99
+ variable_filters: [],
100
+ }
101
+ end
102
+
103
+ def configure_filter_ui_settings
104
+ @filter_ui_settings = {}
105
+ end
106
+
107
+ def resource_url(obj)
108
+ url_for([:admin, @role, obj])
109
+ end
110
+
111
+ def resource_controller_configuration
112
+ {
113
+ collection_name: :users,
114
+ item_name: :user,
115
+ class: User,
116
+ show_modal_after_create: false,
117
+ show_modal_after_update: false,
118
+ page_title: "Manage User Roles",
119
+ js_view_path: "/kuppayam/workflows/parrot",
120
+ view_path: "/usman/admin/user_roles"
121
+ }
122
+ end
123
+
124
+ def breadcrumbs_configuration
125
+ {
126
+ heading: "Manage User Roles",
127
+ description: "Listing all User Roles",
128
+ links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'}]
129
+ }
130
+ end
131
+
132
+ def permitted_params
133
+ params.require(:user).permit(:id)
134
+ end
135
+
136
+ def set_navs
137
+ set_nav("admin/roles/user_roles")
138
+ end
139
+
140
+ end
141
+ end
142
+ end
@@ -59,7 +59,7 @@ module Usman
59
59
 
60
60
  # Normal users should not be able to view super admins
61
61
  # He should not be seeing admins even while searching
62
- if @current_user.is_super_admin?
62
+ if @current_user.super_admin?
63
63
  @relation = @relation.where("super_admin IS #{@super_admin.to_s.upcase}") if @super_admin.nil? == false && @query.nil?
64
64
  else
65
65
  @relation = @relation.where("super_admin IS FALSE")
@@ -104,13 +104,16 @@ module Usman
104
104
 
105
105
  def resource_controller_configuration
106
106
  {
107
- view_path: "usman/admin/users"
107
+ page_title: "Users",
108
+ js_view_path: "/kuppayam/workflows/peacock",
109
+ view_path: "/usman/admin/users"
108
110
  }
109
111
  end
110
112
 
111
113
  def breadcrumbs_configuration
112
114
  {
113
115
  heading: "Manage Users",
116
+ icon: "fa-user",
114
117
  description: "Listing all Users",
115
118
  links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
116
119
  {name: "Manage Users", link: admin_users_path, icon: 'fa-user', active: true}]
@@ -5,9 +5,5 @@ module Usman
5
5
 
6
6
  before_action :current_user
7
7
 
8
- def set_default_title
9
- set_title("Usman - User Management System")
10
- end
11
-
12
8
  end
13
9
  end
@@ -3,17 +3,20 @@ module Usman
3
3
 
4
4
  layout 'kuppayam/blank'
5
5
 
6
+ rescue_from ActionController::InvalidAuthenticityToken, :with => :rescue_from_invalid_authenticity_token
7
+
6
8
  before_action :require_user, :only => :sign_out
7
9
  skip_before_action :set_navs
8
10
 
9
11
  def sign_in
10
12
  set_title("Sign In")
11
- redirect_to_appropriate_page_after_sign_in if @current_user && !@current_user.token_expired?
13
+ redirect_to_appropriate_page_after_sign_in if @current_user
12
14
  end
13
15
 
14
16
  def create_session
15
17
  set_title("Sign In")
16
- @registration_details = Usman::AuthenticationService.new(params)
18
+ registration_params = { login_handle: params[:login_handle], password: params[:password], remote_ip: request.remote_ip}
19
+ @registration_details = Usman::AuthenticationService.new(registration_params)
17
20
 
18
21
  if @registration_details.error
19
22
 
@@ -10,7 +10,14 @@ module Usman
10
10
 
11
11
  # Returns the default URL to which the system should redirect the user after successful authentication
12
12
  def default_redirect_url_after_sign_in
13
- usman.admin_dashboard_url
13
+ main_app.user_landing_url
14
+ # if @current_user.has_role?("Admin")
15
+ # main_app.admin_dashboard_url
16
+ # elsif @current_user.has_role?("Admin")
17
+ # main_app.store_dashboard_url
18
+ # else
19
+ # main_app.admin_dashboard_url
20
+ # end
14
21
  end
15
22
 
16
23
  # Returns the default URL to which the system should redirect the user after an unsuccessful attempt to authorise a resource/page
@@ -22,11 +29,11 @@ module Usman
22
29
  # This method should also handle the redirection if it has come through a client appliction for authentication
23
30
  # In that case, it should persist the params passed by the client application
24
31
  def redirect_after_unsuccessful_authentication
25
- params_hsh = {}
26
- params_hsh[:client_app] = params[:client_app] if params[:client_app]
27
- params_hsh[:redirect_back_url] = params[:redirect_back_url] if params[:redirect_back_url]
28
- params_hsh[:requested_url] = request.original_url if request.get?
29
- redirect_to add_query_params(default_sign_in_url, params_hsh)
32
+ @params_hsh = {}
33
+ @params_hsh[:client_app] = params[:client_app] if params[:client_app]
34
+ @params_hsh[:redirect_back_url] = params[:redirect_back_url] if params[:redirect_back_url]
35
+ @params_hsh[:requested_url] = request.original_url if request.get?
36
+ redirect_to add_query_params(default_sign_in_url, @params_hsh)
30
37
  return
31
38
  end
32
39
 
@@ -43,12 +50,30 @@ module Usman
43
50
  return
44
51
  end
45
52
 
53
+ def rescue_from_invalid_authenticity_token
54
+ text = "#{I18n.t("authentication.session_expired.heading")}"
55
+ set_flash_message(text, :error, false) if defined?(flash) && flash
56
+ respond_to do |format|
57
+ format.html {
58
+ redirect_to add_query_params(default_sign_in_url)
59
+ }
60
+ format.js {
61
+ render(:partial => 'usman/sessions/sign_in.js.erb', :handlers => [:erb], :formats => [:js])
62
+ }
63
+ end
64
+ end
65
+
46
66
  def redirect_or_popup_to_default_sign_in_page
47
67
  respond_to do |format|
48
68
  format.html {
49
69
  redirect_after_unsuccessful_authentication
50
70
  }
51
71
  format.js {
72
+ @params_hsh = {}
73
+ @params_hsh[:client_app] = params[:client_app] if params[:client_app]
74
+ @params_hsh[:redirect_back_url] = params[:redirect_back_url] if params[:redirect_back_url]
75
+ @params_hsh[:requested_url] = request.original_url if request.get?
76
+
52
77
  render(:partial => 'usman/sessions/sign_in.js.erb', :handlers => [:erb], :formats => [:js])
53
78
  }
54
79
  end
@@ -65,22 +90,8 @@ module Usman
65
90
  # This method is usually used as a before filter to secure some of the actions which requires the user to be signed in.
66
91
  def require_user
67
92
  current_user
68
-
69
- if @current_user
70
- if @current_user.token_expired?
71
- @current_user = nil
72
- session.delete(:id)
73
-
74
- text = "#{I18n.t("authentication.session_expired.heading")}: #{I18n.t("authentication.session_expired.message")}"
75
- set_flash_message(text, :error, false) if defined?(flash) && flash
76
-
77
- redirect_or_popup_to_default_sign_in_page
78
- return
79
- else
80
- @current_user.update_token if @current_user.token_about_to_expire?
81
- end
82
- else
83
- text = "#{I18n.t("authentication.permission_denied.heading")}: #{I18n.t("authentication.permission_denied.message")}"
93
+ unless @current_user
94
+ text = "#{I18n.t("authentication.login_required.heading")}"
84
95
  set_flash_message(text, :error, false) if defined?(flash) && flash
85
96
 
86
97
  redirect_or_popup_to_default_sign_in_page
@@ -90,7 +101,7 @@ module Usman
90
101
 
91
102
  # This method is usually used as a before filter from admin controllers to ensure that the logged in user is a super admin
92
103
  def require_super_admin
93
- unless @current_user.is_super_admin?
104
+ unless @current_user.super_admin?
94
105
  text = "#{I18n.t("authentication.permission_denied.heading")}: #{I18n.t("authentication.permission_denied.message")}"
95
106
  set_flash_message(text, :error, false) if defined?(flash) && flash
96
107
 
@@ -116,9 +127,8 @@ module Usman
116
127
  message = translate("authentication.masquerade", user: user.name)
117
128
  set_flash_message(message, :success, false)
118
129
  session[:last_user_id] = current_user.id if current_user
119
- user.start_session
130
+ user.start_session(params[:remote_ip])
120
131
  session[:id] = user.id
121
- default_redirect_url_after_sign_in
122
132
  redirect_to default_redirect_url_after_sign_in
123
133
  end
124
134