Skip to content

Commit

Permalink
Merge branch 'master' of github.com:thorin/redmine_ldap_sync
Browse files Browse the repository at this point in the history
  • Loading branch information
thorin committed Aug 4, 2011
2 parents 7ef19ca + d4c58f9 commit 9d09ffe
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 7 deletions.
2 changes: 2 additions & 0 deletions app/views/settings/_ldap_sync_settings.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@

<p><%= ldap_check_box ldap.name, 'create_groups', :default => true %></p>

<p><%= ldap_check_box ldap.name, 'create_users', :default => true %></p>

<p><%= ldap_check_box ldap.name, 'sync_user_attributes' %></p>

<p><%= ldap_multiselect ldap.name, 'attributes_to_sync', ['firstname', 'lastname', 'mail'], :size => 15 %></p>
Expand Down
1 change: 1 addition & 0 deletions config/locales/de.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ de:
field_redmine_ldap_sync_must_be_member_of: "Users must be members of"
field_redmine_ldap_sync_add_to_group: "Add users to group"
field_redmine_ldap_sync_create_groups: "Create new groups"
field_redmine_ldap_sync_create_users: "Create new users"
field_redmine_ldap_sync_sync_user_attributes: "Sync users attributes"
field_redmine_ldap_sync_attributes_to_sync: "Attributes to be synced"

Expand Down
1 change: 1 addition & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ en:
field_redmine_ldap_sync_must_be_member_of: "Users must be members of"
field_redmine_ldap_sync_add_to_group: "Add users to group"
field_redmine_ldap_sync_create_groups: "Create new groups"
field_redmine_ldap_sync_create_users: "Create new users"
field_redmine_ldap_sync_sync_user_attributes: "Sync users attributes"
field_redmine_ldap_sync_attributes_to_sync: "Attributes to be synced"

Expand Down
1 change: 1 addition & 0 deletions config/locales/es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ es:
field_redmine_ldap_sync_must_be_member_of: "Usuarios deben ser miembros de"
field_redmine_ldap_sync_add_to_group: "Añadir usuarios al grupo"
field_redmine_ldap_sync_create_groups: "Crear nuevos grupos"
field_redmine_ldap_sync_create_users: "Crear nuevos usuarios"
field_redmine_ldap_sync_sync_user_attributes: "Sincronizar usuarios"
field_redmine_ldap_sync_attributes_to_sync: "Atributos que se sincronizan"

Expand Down
1 change: 1 addition & 0 deletions config/locales/pt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ pt:
field_redmine_ldap_sync_must_be_member_of: "Devem ser membros de"
field_redmine_ldap_sync_add_to_group: "Adicionar ao grupo"
field_redmine_ldap_sync_create_groups: "Criar novos grupos"
field_redmine_ldap_sync_create_users: "Criar novos utilizadores"
field_redmine_ldap_sync_sync_user_attributes: "Actualizar dados"
field_redmine_ldap_sync_attributes_to_sync: "Campos a actualizar"

Expand Down
1 change: 1 addition & 0 deletions db/migrate/201108021245_change_settings_name.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ def self.up
settings[:add_to_group] = settings.delete(:domain_group)
settings[:groupname_pattern] = settings.delete(:groupname_filter)
settings[:create_groups] = true
settings[:create_users] = true
settings[:sync_user_attributes] = false
settings[:attr_member] = 'member'
settings[:class_group] = 'group'
Expand Down
26 changes: 19 additions & 7 deletions lib/redmine_ldap_sync/redmine_ext/auth_source_ldap_patch.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ def self.included(base)
def sync_groups(user)
return unless ldapsync_active?

if add_to_group && !user.groups.detect { |g| g.to_s == add_to_group }
user.add_to_auth_source_group
end

changes = groups_changes(user)
changes[:added].each do |groupname|
next if user.groups.detect { |g| g.to_s == groupname }
Expand Down Expand Up @@ -38,16 +42,20 @@ def sync_users
end

groupname = settings[:must_be_member_of]

ldap_users[:enabled].each do |login|
user_is_fresh = false
user = User.find_or_create_by_login(login) do |user|
user.attributes = get_user_dn(login).except(:dn)
user.language = Setting.default_language
user_is_fresh = true
user = if create_users?
User.find_or_create_by_login(login) do |user|
user.attributes = get_user_dn(login).except(:dn)
user.language = Setting.default_language
user_is_fresh = true
end
else
User.find_by_login(login)
end
if user.auth_source_id == self.id

if user && user.auth_source_id == self.id
sync_groups(user)
sync_user_attributes(user) unless user_is_fresh
user.lock! if groupname.present? && !user.groups.exists?(:lastname => groupname)
Expand Down Expand Up @@ -154,6 +162,10 @@ def create_groups?
settings && settings[:create_groups]
end

def create_users?
settings && settings[:create_users]
end

def settings
return @settings if @settings

Expand Down

0 comments on commit 9d09ffe

Please sign in to comment.