gatepass 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e7aeabfb6de154ecf1aa96f4e9009137eb8e9c674c3a8be94f4eddce9880945
4
- data.tar.gz: ca35a4b1f36f2f943b4dcbebfcbfce21c698a7f173bce1f991038e48d273958d
3
+ metadata.gz: 22e7d410f8cc59147182ef88f8b78fee3f0801f8bef57aea3f469b655f77f294
4
+ data.tar.gz: 1988ca42cd43522a1261885a7b69bac2768435071c5e607bf5de864e8bb179c4
5
5
  SHA512:
6
- metadata.gz: 877b3867d4b2e5d565d2ea57ccc367ba368c62a17afd6aa98db3fa5aedbf91d3879c3bacd220da4af11feeae82ae1212cc27ad521984d17ee38f6f6ab2785e86
7
- data.tar.gz: 754407cd8631ac1f502d766a1939d6fbba4e387817c8335584740b196f8572cdfe13f0c0af456d3ccf9a9d8785f6e2ba559d5740da01c835b3b9d021967dad1a
6
+ metadata.gz: bbacc80c229ef6cf208bc16e9a9b769c5b38dbe40dd11220f5b8910669e69200c08c5cd1e7a102e2ab8e142518920707c532a4b001639f35ee8c23e5ccf8fa12
7
+ data.tar.gz: 9610a39b9bfd248cdf2db26317cef29e4bcb9618b4086b181189cbcdf94f3f32f82d0c346f3c9eae3572d68211863b74e892c145f16d497467f1c3a06dde94a4
data/README.md CHANGED
@@ -4,6 +4,16 @@ Short description and motivation.
4
4
  ## Usage
5
5
  See the Installation section below.
6
6
 
7
+ For setting up a DEV environment, clone the directory within a rails project and add to the Gemfile:
8
+ ```
9
+ gem 'gatepass', path: 'gatepass'
10
+ ```
11
+ OR
12
+ ```
13
+ gem 'gatepass', git: 'https://github.com/pockettheories/gatepass'
14
+ ```
15
+ See [Bundle Git Guide](https://bundler.io/guides/git.html) for more
16
+
7
17
  ## Installation
8
18
  Add this line to your application's Gemfile:
9
19
 
@@ -20,6 +30,10 @@ Or install it yourself as:
20
30
  ```bash
21
31
  $ gem install gatepass
22
32
  ```
33
+ OR
34
+ ```bash
35
+ $ bundle add gatepass
36
+ ```
23
37
 
24
38
  Mount the engine with the following line in `config/routes.rb` :
25
39
  ```
@@ -59,16 +73,32 @@ u1.auth_type = 'local'
59
73
  u1.save
60
74
  ```
61
75
 
76
+ Create an initial ActiveDirectory user account with:
77
+ ```
78
+ $ rails c
79
+ u1 = Gatepass::User.new
80
+ u1.username = 'reddy'
81
+ u1.password = 'dummy'
82
+ u1.auth_type = 'activedirectory'
83
+ u1.rolename = 'admin'
84
+ u1.username_mapping = 'CN=reddy,CN=Users,DC=pockettheories,DC=com'
85
+ u1.save
86
+ ```
87
+
62
88
  Login with the above account, and access the user account management page at:
63
89
  http://localhost:3000/gatepass/users
64
90
 
91
+ The logout URL is:
92
+ http://localhost:3000/gatepass/authentication/logout
93
+
65
94
  ## Other Notes
66
95
  The User model has the fields: username:string auth_type:string password_digest:string username_mapping:string
67
-
68
96
  auth_type is `local` or `activedirectory`.
69
-
70
97
  Use a dummy password for activedirectory users.
71
98
 
99
+ If you get the error "SSL_CTX_load_verify_file: system lib" when attempting to login as an ActiveDirectory user, it's
100
+ Ruby complaining about your OpenSSL version. (On MacOS Ventura 13.4.1, rbenv with Ruby 3.1.0 works; Ruby 3.2.2 doesn't)
101
+
72
102
  ## Contributing
73
103
  Create a pull request on GitHub.
74
104
 
@@ -23,7 +23,7 @@ module Gatepass
23
23
  if user_obj === false
24
24
  redirect_to ({ controller: 'gatepass/authentication', action: 'login' })
25
25
  else
26
- session[:user] = user_obj
26
+ session[:user] = user
27
27
  redirect_to main_app.root_url
28
28
  end
29
29
  elsif user.auth_type == 'activedirectory' # 'ldap'
@@ -59,6 +59,7 @@ module Gatepass
59
59
  redirect_to({ controller: 'gatepass/authentication', action: 'login' })
60
60
  elsif search_result_count == 1
61
61
  session[:user] = user # entry
62
+ session[:user_ldap_info] = entry
62
63
  redirect_to main_app.root_url
63
64
  else
64
65
  redirect_to({ controller: 'gatepass/authentication', action: 'login' })
@@ -1,3 +1,8 @@
1
+ #
2
+ #
3
+ # Refactor the code to make it less repetitive
4
+ #
5
+
1
6
  module Gatepass
2
7
  class UsersController < ApplicationController
3
8
  before_action :set_user, only: %i[ show edit update destroy ]
@@ -5,25 +10,50 @@ module Gatepass
5
10
  # GET /users
6
11
  def index
7
12
  @users = User.all
13
+
14
+ @current_user = session[:user]
15
+ if @current_user['rolename'] != 'admin'
16
+ @users = @users.where(:id => @current_user[:id])
17
+ end
8
18
  end
9
19
 
10
20
  # GET /users/1
11
21
  def show
22
+
23
+ @current_user = session[:user]
24
+ if @current_user['rolename'] != 'admin' and @user[:id] != @current_user[:id]
25
+ redirect_to users_url, notice: "You must be an admin to view users"
26
+ end
12
27
  end
13
28
 
14
29
  # GET /users/new
15
30
  def new
16
31
  @user = User.new
32
+
33
+ @current_user = session[:user]
34
+ if @current_user['rolename'] != 'admin'
35
+ redirect_to users_url, notice: "You must be an admin to create a new user"
36
+ end
17
37
  end
18
38
 
19
39
  # GET /users/1/edit
20
40
  def edit
41
+
42
+ @current_user = session[:user]
43
+ if @current_user['rolename'] != 'admin'
44
+ redirect_to users_url, notice: "You must be an admin to edit a user"
45
+ end
21
46
  end
22
47
 
23
48
  # POST /users
24
49
  def create
25
50
  @user = User.new(user_params)
26
51
 
52
+ @current_user = session[:user]
53
+ if @current_user['rolename'] != 'admin'
54
+ redirect_to users_url, notice: "You must be an admin to create a new user"
55
+ end
56
+
27
57
  if @user.save
28
58
  redirect_to @user, notice: "User was successfully created."
29
59
  else
@@ -33,6 +63,12 @@ module Gatepass
33
63
 
34
64
  # PATCH/PUT /users/1
35
65
  def update
66
+
67
+ @current_user = session[:user]
68
+ if @current_user['rolename'] != 'admin'
69
+ redirect_to users_url, notice: "You must be an admin to update a new user"
70
+ end
71
+
36
72
  if @user.update(user_params)
37
73
  redirect_to @user, notice: "User was successfully updated."
38
74
  else
@@ -42,6 +78,12 @@ module Gatepass
42
78
 
43
79
  # DELETE /users/1
44
80
  def destroy
81
+
82
+ @current_user = session[:user]
83
+ if @current_user['rolename'] != 'admin'
84
+ redirect_to users_url, notice: "You must be an admin to delete a new user"
85
+ end
86
+
45
87
  @user.destroy
46
88
  redirect_to users_url, notice: "User was successfully destroyed.", status: :see_other
47
89
  end
@@ -54,7 +96,7 @@ module Gatepass
54
96
 
55
97
  # Only allow a list of trusted parameters through.
56
98
  def user_params
57
- params.require(:user).permit(:username, :auth_type, :password_digest, :username_mapping)
99
+ params.require(:user).permit(:username, :auth_type, :password_digest, :rolename, :username_mapping)
58
100
  end
59
101
  end
60
102
  end
@@ -18,7 +18,8 @@
18
18
 
19
19
  <div>
20
20
  <%= form.label :auth_type, style: "display: block" %>
21
- <%= form.text_field :auth_type %>
21
+ <%#= form.text_field :auth_type %>
22
+ <%= form.select :auth_type, ["local", "activedirectory"].map {|e| [e, e]} %>
22
23
  </div>
23
24
 
24
25
  <div>
@@ -26,6 +27,12 @@
26
27
  <%= form.text_field :password_digest %>
27
28
  </div>
28
29
 
30
+ <div>
31
+ <%= form.label :rolename, style: "display: block" %>
32
+ <%#= form.text_field :rolename %>
33
+ <%= form.select :rolename, ["user", "admin"].map {|e| [e, e]} %>
34
+ </div>
35
+
29
36
  <div>
30
37
  <%= form.label :username_mapping, style: "display: block" %>
31
38
  <%= form.text_field :username_mapping %>
@@ -14,6 +14,11 @@
14
14
  <%= user.password_digest %>
15
15
  </p>
16
16
 
17
+ <p>
18
+ <strong>Role:</strong>
19
+ <%= user.rolename %>
20
+ </p>
21
+
17
22
  <p>
18
23
  <strong>Username mapping:</strong>
19
24
  <%= user.username_mapping %>
@@ -12,3 +12,8 @@
12
12
  </div>
13
13
 
14
14
  <%= link_to "New user", new_user_path %>
15
+
16
+ <!--<div>-->
17
+ <!-- <b>Current User:</b>-->
18
+ <%#= session[:user] %>
19
+ <!--</div>-->
@@ -5,6 +5,7 @@ class CreateGatepassUsers < ActiveRecord::Migration[7.0]
5
5
  t.string :auth_type
6
6
  t.string :password_digest
7
7
  t.string :username_mapping
8
+ t.string :rolename
8
9
 
9
10
  t.timestamps
10
11
  end
@@ -1,3 +1,3 @@
1
1
  module Gatepass
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gatepass
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nitin Reddy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-27 00:00:00.000000000 Z
11
+ date: 2023-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails