add CTA for project members modal SCI-5645

This commit is contained in:
zmagoD 2021-04-18 12:23:29 +02:00
parent 37f3f41d06
commit 3333241c9a
7 changed files with 87 additions and 0 deletions

View file

@ -0,0 +1,24 @@
# frozen_string_literal: true
module AccessPermissions
class ProjectsController < ApplicationController
before_action :set_project
before_action :check_manage_permissions
def edit
end
private
def set_project
@project = Project.find_by(id: params[:id])
render_404 unless @project
end
def check_manage_permissions
render_403 unless can_manage_project?(@project)
end
end
end

View file

@ -59,6 +59,8 @@ class Project < ApplicationRecord
scope :templates, -> { where(template: true) }
after_create :assign_project_ownership
def self.visible_from_user_by_name(user, team, name)
projects = where(team: team).distinct
if user.is_admin_of_team?(team)
@ -360,4 +362,12 @@ class Project < ApplicationRecord
def remove_project_folder
self.project_folder = nil if archived?
end
def assign_project_ownership
UserAssignment.create(
user: created_by,
assignable: self,
user_role: UserRole.owner_role
)
end
end

View file

@ -0,0 +1,24 @@
<div class="modal fade"
tabindex="-1"
role="dialog">
<%= bootstrap_form_tag(url: access_permissions_project_path(@project), remote: true) do |f| %>
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><%=t 'zip_export.modal_label' %></h4>
</div>
<div class="modal-body">
<div><%=t('zip_export.repository_header_html', repository: repository.name) %></div>
<div class="custom-alert-info"><%=t 'zip_export.files_alert' %></div>
<div><%=t 'zip_export.repository_footer_html' %></div>
</div>
<div class="modal-footer">
<button type='button' class='btn btn-default' data-dismiss='modal' id='close-modal-export-repositories'><%= t('general.cancel')%></button>
<%= f.submit t('my_modules.repository.export'), id: "export-repositories", class: "btn btn-success" %>
</div>
</div>
</div>
<% end %>
</div>

View file

@ -48,6 +48,18 @@
<% end %>
</li>
<% end %>
<!-- Project members access -->
<% if can_read_project?(project) %>
<li class="form-dropdown-item">
<%= button_to access_permissions_project_path(project, format: :json),
method: :put,
remote: true,
class: 'btn btn-light' do %>
<span class="fas fa-plus"></span>
<%= I18n.t('projects.index.project_members_access') %>
<% end %>
</li>
<% end %>
<!-- Show comments -->
<li>
<a href="#"

View file

@ -372,6 +372,7 @@ en:
archive_option: "Archive"
archive_confirm: "Are you sure you want to archive this project?"
restore_option: "Restore"
project_members_access: "Project members access"
comments_option: "Show commments (%{comments_count})"
activities_option: "Open activities"
comment_placeholder: "Your Message"

View file

@ -227,6 +227,10 @@ Rails.application.routes.draw do
resource :recent_works, module: 'dashboard', only: [:show]
end
namespace :access_permissions do
resources :projects, only: [:edit, :update, :destroy]
end
resources :projects, except: [:destroy] do
resources :user_projects, path: '/users', only: %i(create index update destroy), as: :users do
collection do

View file

@ -78,4 +78,16 @@ describe Project, type: :model do
end
end
end
describe 'after create hooks' do
it 'grands owner permissions to project creator' do
user = create(:user)
project.created_by = user
expect {
project.save
}.to change(UserAssignment, :count).by(1)
user_role = project.reload.user_assignments.first.user_role
expect(user_role.name).to eq 'Owner'
end
end
end