Page Menu
Home
GRNET
Search
Configure Global Search
Log In
Files
F324314
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Nov 25, 2:50 PM
Size
5 KB
Mime Type
text/x-diff
Expires
Wed, Nov 27, 2:50 PM (1 d, 16 h)
Engine
blob
Format
Raw Data
Handle
156152
Attached To
rWEBDNS WebDNS (edet4)
View Options
diff --git a/app/models/group.rb b/app/models/group.rb
index 45b21c0..fe3ae8f 100644
--- a/app/models/group.rb
+++ b/app/models/group.rb
@@ -1,8 +1,8 @@
class Group < ActiveRecord::Base
has_many :domains
validates :name, presence: true, uniqueness: true
- has_many :memberships
+ has_many :memberships, dependent: :delete_all
has_many :users, through: :memberships
end
diff --git a/app/models/user.rb b/app/models/user.rb
index c2e1873..90a1009 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,52 +1,52 @@
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
- has_many :memberships
+ has_many :memberships, dependent: :delete_all
has_many :groups, through: :memberships
has_many :subscriptions, dependent: :delete_all
scope :orphans, -> { includes(:memberships).where(:memberships => { user_id: nil }) }
# Check if the user can change his password
#
# Remote users are not able to change their password
def can_change_password?
!identifier?
end
def toggle_admin
self.admin = !self.admin
end
def to_api
Hash[
:id, id,
:email, email
].with_indifferent_access
end
def self.find_for_database_authentication(conditions)
# Override devise method for database auth
# We only want to auth local user via the database.
find_first_by_auth_conditions(conditions, identifier: '')
end
def mute_all_domains
ActiveRecord::Base.transaction do
domain_ids = Domain.where(group: groups).pluck(:id)
domain_ids.each { |did|
sub = self.subscriptions.create(domain_id: did)
if !sub.valid?
# Allow only domain_id (uniqueness) errors
raise x.errors.full_messages.join(', ') if sub.errors.size > 1
raise x.errors.full_messages.join(', ') if !sub.errors[:domain_id]
end
}
end
end
end
diff --git a/app/views/groups/show.html.erb b/app/views/groups/show.html.erb
index d81de70..2e58964 100644
--- a/app/views/groups/show.html.erb
+++ b/app/views/groups/show.html.erb
@@ -1,92 +1,92 @@
<% content_for :more_breadcrumbs do %>
<li>
<%= link_to_edit edit_admin_group_path(@group) %>
<%= link_to_destroy admin_group_path(@group), method: :delete, data: { confirm: 'Are you sure?' } %>
</li>
<% end if admin? %>
<ul class="nav nav-tabs">
<li role="presentation" class="active"><a id="tab-link-domains" data-toggle="tab" href="#domains_tab">Domains</a></li>
<li role="presentation"><a id="tab-link-members" data-toggle="tab" href="#members_tab">Members</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="domains_tab">
<table id="domains" class="table table-striped">
<thead>
<tr>
<th>Domain</th>
<th>Serial</th>
<th>Group</th>
<th>State</th>
<th>Slave</th>
<th>DNSSEC</th>
<th class="no-order-and-search">Controls</th>
</tr>
</thead>
<tbody>
<% @domains.group_by(&:group).each do |group, domains| %>
<% domains.each do |domain| %>
<tr class="group-<%= group.id =%>">
<td><%= link_to domain.name, domain %></td>
<td><%= domain.serial %></td>
<td><%= link_to group.name, group_path(group) %></td>
<td><%= human_state(domain.state) %></td>
<td><%= domain.slave? ? domain.master : '-' %></td>
<td><%= domain.dnssec? ? 'secure' : '-' %></td>
<td>
<%= link_to_edit edit_domain_path(domain) %>
<% if @optouts.include? domain.id %>
<%= link_to_unmute user_domain_unmute_path(current_user, domain), method: :put %>
<% else %>
<%= link_to_mute user_domain_mute_path(current_user, domain), method: :put %>
<% end %>
<%= link_to_destroy domain, method: :delete, data: { confirm: 'Are you sure?' } if domain.can_remove? %>
<%= link_to_full_destroy full_destroy_domain_path(domain),
method: :delete, data: { confirm: 'Are you sure?' } if domain.can_remove? && domain.dnssec? %>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
<p>
<% if current_user.memberships.any? %>
<%= link_to 'Add Domain', new_domain_path(group_id: @group.id), class: 'btn btn-primary' %>
<% else %>
<%= link_to 'Add Domain', new_domain_path(group_id: @group.id), class: 'btn btn-primary disabled' %>
<% end %>
</p>
</div>
<div role="tabpanel" class="tab-pane" id="members_tab">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Member</th>
<th>Controls</th>
</tr>
</thead>
<tbody>
- <% @group.memberships.includes(:user).each do |membership| %>
+ <% @group.memberships.includes(:user).reject{|i| i.user.nil?}.each do |membership| %>
<tr>
<td><%= membership.user.email %><%= " (you)" if current_user == membership.user %></td>
<td>
<%= link_to_destroy destroy_member_group_path(@group, membership.user_id), method: :delete %>
</td>
</tr>
<% end %>
</tbody>
</table>
<p>
<%= bootstrap_form_tag(url: create_member_group_path(@group), layout: :inline) do |f| %>
<%= f.text_field :email, prepend: 'Add Member', hide_label: true, id: 'js-search-member', data: { group: @group.id } %>
<%= f.submit 'Add', class: 'btn btn-primary' %>
<% end %>
</p>
</div>
</div>
Event Timeline
Log In to Comment