lita-activedirectory 1.1.0 → 1.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e234fdbf176937e5e6a4ad5bf906999bebcef275
4
- data.tar.gz: 86900dd8e120905eb003469ead17984d458221d4
3
+ metadata.gz: 46e9aa5d62f8db695f7b993ce7809a5893197786
4
+ data.tar.gz: 61e92a97b680089344b4e671dc67dd89041c74c3
5
5
  SHA512:
6
- metadata.gz: 98f81d6e24790574f06bbcd2f625dacba7f1a4078e3a2aec1b6f2f458677ae1556fb19668176209a8d27fbbc1d625748a9b94973db71ad36d6169218efcc94b7
7
- data.tar.gz: 52fd9a7603db8f5d968c2b3e544a1ebf7900bf702544aaf5626f8a9f0c4f402e69d67692dc7ff60b79ae887908cd6607781863d499eb7cb4659d2a6e12030635
6
+ metadata.gz: fd17187c82e1e5f09f80ae101c249a01b43c95858c5b37dd0ac83cb1c85186195c322642ad29ec1c98f219c080c4c9753cd8fe9d756cf46e5c00d70ec514ad88
7
+ data.tar.gz: a4fd26f6d23164ac1b3cabc24cd691b9c6ba522f7141c84b9b60fd03ef753c1ff4b74eea8ec55e348590eedd6fc8de49e8bcc72315df932fc0e1696e2f9510ae
@@ -16,7 +16,7 @@ Metrics/MethodLength:
16
16
  Max: 20
17
17
 
18
18
  Metrics/ClassLength:
19
- Max: 150
19
+ Max: 200
20
20
 
21
21
  Metrics/BlockLength:
22
22
  Max: 30
data/README.md CHANGED
@@ -30,7 +30,7 @@ gem "lita-activedirectory"
30
30
 
31
31
  Requires membership in `ad_admins` authorization group.
32
32
 
33
- The user account specified in `config.handlers.activedirectory.username` must have permission to write the lockouttime attribute for unlocking to succeed. We leave it up to you to secure this account accordingly.
33
+ The user account specified in `config.handlers.activedirectory.username` must have permission to write the `lockouttime` attribute for unlocking to succeed. We leave it up to you to secure this account accordingly.
34
34
 
35
35
  ### List a User's Group Memberships
36
36
  `<username> groups>`
@@ -43,11 +43,25 @@ The user account specified in `config.handlers.activedirectory.username` must ha
43
43
 
44
44
  Requires membership in `ad_admins` authorization group.
45
45
 
46
- The user account specified in `config.handlers.activedirectory.username` must have permission to write the member attribute on groups for the membership change to succeed. We leave it up to you to secure this account accordingly.
46
+ The user account specified in `config.handlers.activedirectory.username` must have permission to write the `member` attribute on groups for the membership change to succeed. We leave it up to you to secure this account accordingly.
47
47
 
48
48
  ### Remove a User from a Group
49
49
  `remove <username> from <groupname>`
50
50
 
51
51
  Requires membership in `ad_admins` authorization group.
52
52
 
53
- The user account specified in `config.handlers.activedirectory.username` must have permission to write the member attribute on groups for the membership change to succeed. We leave it up to you to secure this account accordingly.
53
+ The user account specified in `config.handlers.activedirectory.username` must have permission to write the `member` attribute on groups for the membership change to succeed. We leave it up to you to secure this account accordingly.
54
+
55
+ ### Disable a User
56
+ `disable user <username>`
57
+
58
+ Requires membership in `ad_admins` authorization group.
59
+
60
+ The user account specified in `config.handlers.activedirectory.username` must have permission to write the `userAccountControl` attribute on groups for the change to succeed. We leave it up to you to secure this account accordingly.
61
+
62
+ ### Enable a User
63
+ `enable user <username>`
64
+
65
+ Requires membership in `ad_admins` authorization group.
66
+
67
+ The user account specified in `config.handlers.activedirectory.username` must have permission to write the `userAccountControl` attribute on groups for the change to succeed. We leave it up to you to secure this account accordingly.
@@ -55,6 +55,22 @@ module Lita
55
55
  help: { t('help.add_member.syntax') => t('help.add_member.desc') }
56
56
  )
57
57
 
58
+ route(
59
+ /^disable\s+user\s+(\S+)$/i,
60
+ :disable_user,
61
+ command: true,
62
+ restrict_to: :ad_admins,
63
+ help: { t('help.disable_user.syntax') => t('help.disable_user.desc') }
64
+ )
65
+
66
+ route(
67
+ /^enable\s+user\s+(\S+)$/i,
68
+ :enable_user,
69
+ command: true,
70
+ restrict_to: :ad_admins,
71
+ help: { t('help.enable_user.syntax') => t('help.enable_user.desc') }
72
+ )
73
+
58
74
  include ::Utils::Cratususer
59
75
 
60
76
  def user_locked?(response)
@@ -130,6 +146,34 @@ module Lita
130
146
  )
131
147
  end
132
148
 
149
+ def disable_user(response)
150
+ user = response.matches[0][0]
151
+
152
+ response.reply_with_mention(t('replies.disable_user.working'))
153
+ result = disable_ldap_user(user)
154
+ response.reply_with_mention(
155
+ if result.nil?
156
+ t('replies.disable_user.error', user: user)
157
+ else
158
+ t('replies.disable_user.success', user: user)
159
+ end
160
+ )
161
+ end
162
+
163
+ def enable_user(response)
164
+ user = response.matches[0][0]
165
+
166
+ response.reply_with_mention(t('replies.enable_user.working'))
167
+ result = enable_ldap_user(user)
168
+ response.reply_with_mention(
169
+ if result.nil?
170
+ t('replies.enable_user.error', user: user)
171
+ else
172
+ t('replies.enable_user.success', user: user)
173
+ end
174
+ )
175
+ end
176
+
133
177
  private
134
178
 
135
179
  def handle_user_query(response, user, result)
@@ -83,5 +83,23 @@ module Utils
83
83
  nil
84
84
  end
85
85
  end
86
+
87
+ def disable_ldap_user(username)
88
+ cratus_connect
89
+ begin
90
+ Cratus::User.new(username.to_s).disable
91
+ rescue
92
+ nil
93
+ end
94
+ end
95
+
96
+ def enable_ldap_user(username)
97
+ cratus_connect
98
+ begin
99
+ Cratus::User.new(username.to_s).enable
100
+ rescue
101
+ nil
102
+ end
103
+ end
86
104
  end
87
105
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'lita-activedirectory'
3
- spec.version = '1.1.0'
3
+ spec.version = '1.2.0'
4
4
  spec.authors = ['Daniel Schaaff', 'Jonathan Gnagy']
5
5
  spec.email = ['dschaaff@knuedge.com']
6
6
  spec.description = 'ldap/active directory instructions for Lita'
@@ -21,6 +21,12 @@ en:
21
21
  remove_member:
22
22
  syntax: remove <username> from <groupname>
23
23
  desc: remove a user from an LDAP group
24
+ disable_user:
25
+ syntax: disable user <username>
26
+ desc: disable an active directory user
27
+ enable_user:
28
+ syntax: enable user <username>
29
+ desc: enable an active directory user
24
30
  replies:
25
31
  user_locked?:
26
32
  working: let me check on that
@@ -47,3 +53,11 @@ en:
47
53
  working: Give me just a second to remove that user from the group
48
54
  error: "That did not work, double check that '%{user}' and '%{group}' are valid"
49
55
  success: "'%{user}' is no longer a member of '%{group}'"
56
+ disable_user:
57
+ working: Let's stop that user from logging in then
58
+ error: "That did not work, double check that '%{user}' is a valid user"
59
+ success: "'%{user}' is now disabled"
60
+ enable_user:
61
+ working: I'll allow this user to login again
62
+ error: "That did not work, double check that '%{user}' is a valid user"
63
+ success: "'%{user}' is now enabled"
@@ -22,6 +22,10 @@ describe Lita::Handlers::Activedirectory, lita_handler: true do
22
22
  .with_authorization_for(:ad_admins).to(:add_group_member)
23
23
  is_expected.to route_command('remove foo from bar')
24
24
  .with_authorization_for(:ad_admins).to(:remove_group_member)
25
+ is_expected.to route_command('disable user foo')
26
+ .with_authorization_for(:ad_admins).to(:disable_user)
27
+ is_expected.to route_command('enable user foo')
28
+ .with_authorization_for(:ad_admins).to(:enable_user)
25
29
  end
26
30
 
27
31
  let(:fake_group1) do
@@ -49,7 +53,9 @@ describe Lita::Handlers::Activedirectory, lita_handler: true do
49
53
  fullname: 'Foo Bar',
50
54
  member_of: [],
51
55
  lockouttime: '0',
52
- locked?: false
56
+ locked?: false,
57
+ disable: true,
58
+ enable: true
53
59
  )
54
60
  end
55
61
 
@@ -154,6 +160,34 @@ describe Lita::Handlers::Activedirectory, lita_handler: true do
154
160
  end
155
161
  end
156
162
 
163
+ describe '#disable_user' do
164
+ before do
165
+ robot.auth.add_user_to_group!(lita_user, :ad_admins)
166
+ end
167
+ it 'disables a user' do
168
+ allow(Cratus::LDAP).to receive(:connect).and_return(true)
169
+ allow(Cratus::LDAP).to receive(:connection).and_return(true)
170
+ allow(Cratus::User).to receive(:new).and_return(fake_user)
171
+ send_command('disable user jdoe', as: lita_user)
172
+ expect(replies.first).to eq("Let's stop that user from logging in then")
173
+ expect(replies.last).to eq("'jdoe' is now disabled")
174
+ end
175
+ end
176
+
177
+ describe '#enable_user' do
178
+ before do
179
+ robot.auth.add_user_to_group!(lita_user, :ad_admins)
180
+ end
181
+ it 'enables a user' do
182
+ allow(Cratus::LDAP).to receive(:connect).and_return(true)
183
+ allow(Cratus::LDAP).to receive(:connection).and_return(true)
184
+ allow(Cratus::User).to receive(:new).and_return(fake_user)
185
+ send_command('enable user jdoe', as: lita_user)
186
+ expect(replies.first).to eq("I'll allow this user to login again")
187
+ expect(replies.last).to eq("'jdoe' is now enabled")
188
+ end
189
+ end
190
+
157
191
  describe '#user_groups' do
158
192
  it 'should return proper error mesage' do
159
193
  allow(Cratus::User).to receive(:new).and_return(false_user)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-activedirectory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Schaaff
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-10 00:00:00.000000000 Z
12
+ date: 2017-04-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: lita