Merge branch 'release/1.28.0' into develop

This commit is contained in:
Oleksii Kriuchykhin 2023-09-05 12:54:37 +02:00
commit 2c816cf463
7 changed files with 71 additions and 31 deletions

View file

@ -99,21 +99,11 @@ module AccessPermissions
raise ActiveRecord::RecordInvalid
end
if @project.visible?
user_assignment.update!(
user_role: @project.default_public_user_role,
assigned: :automatically
)
else
user_assignment.destroy!
end
propagate_job(user_assignment, destroy: true)
log_activity(:unassign_user_from_project, { user_target: user_assignment.user.id,
role: user_assignment.user_role.name })
render json: { flash: t('access_permissions.destroy.success', member_name: escape_input(user.full_name)) },
status: :ok
render json: { flash: t('access_permissions.destroy.success', member_name: escape_input(user.full_name)) }
rescue ActiveRecord::RecordInvalid
render json: { flash: t('access_permissions.destroy.failure') },
status: :unprocessable_entity

View file

@ -9,20 +9,15 @@ module Users
end
def destroy
settings = ApplicationSettings.instance
if settings.values['azure_ad_apps']&.find { |v| v['provider_name'] == params[:provider] }
provider = params[:provider]
else
flash[:error] = t('users.settings.account.connected_accounts.errors.not_found')
user_identity = current_user.user_identities.find_by(provider: params[:provider])
if user_identity.blank?
flash.now[:error] = t('users.settings.account.connected_accounts.errors.not_found')
return
end
ActiveRecord::Base.transaction do
__send__("#{provider}_pre_destroy".to_sym) if respond_to?("#{provider}_pre_destroy".to_sym, true)
current_user.user_identities.where(provider: provider).take&.destroy!
end
flash[:success] = t('users.settings.account.connected_accounts.unlink_success')
user_identity.destroy!
flash.now[:success] = t('users.settings.account.connected_accounts.unlink_success')
rescue StandardError
flash[:error] ||= t('users.settings.account.connected_accounts.errors.generic')
flash.now[:error] ||= t('users.settings.account.connected_accounts.errors.generic')
ensure
@linked_accounts = current_user.user_identities.pluck(:provider)
render :index

View file

@ -65,12 +65,14 @@ module UserAssignments
user_assignment = object.user_assignments.find { |ua| ua.user_id == @user.id }
return if user_assignment.blank?
if !object.is_a?(Project) && object.project.visible? && !@remove_from_team
project = object.is_a?(Project) ? object : object.project
if project.visible? && !@remove_from_team
# if project is public, the assignment
# will reset to the default public role
user_assignment.update!(
user_role_id: object.project.default_public_user_role_id,
user_role_id: project.default_public_user_role_id,
assigned: :automatically,
assigned_by: @assigned_by
)

View file

@ -0,0 +1,24 @@
<div class="panel panel-default">
<div class="panel-body">
<div class="col-xs-8 col-sm-9 col-md-9 col-lg-9">
<strong><%= t('users.settings.account.connected_accounts.okta.title') %></strong> <br>
<p><%= t('users.settings.account.connected_accounts.okta.connect_hint') %></p>
</div>
<div class="pull-right">
<div>
<strong>
<%= t('users.settings.account.connected_accounts.okta.connected') %>
<span class="sn-icon sn-icon-check" aria-hidden="true"></span>
</strong>
</div>
<div>
<%= link_to t('users.settings.account.connected_accounts.okta.unlink_button'),
'#unlinkOktaModal',
class: 'btn btn-danger',
data: { toggle: 'modal'} %>
</div>
</div>
</div>
</div>
<%= render partial: 'users/settings/account/connected_accounts/unlink_modals/okta_modal', locals: { provider: provider } %>

View file

@ -10,13 +10,10 @@
<h1 class="connected-accounts-title"><%= t('users.settings.account.connected_accounts.title') %></h1>
<% if @linked_accounts.present? %>
<% @linked_accounts.each do |provider| %>
<% settings = ApplicationSettings.instance %>
<% if provider == 'giot_connect' || settings.values['azure_ad_apps']&.find { |v| v['provider_name'] == provider } %>
<% if lookup_context.exists?(provider, 'users/settings/account/connected_accounts', true) %>
<%= render partial: provider %>
<% else %>
<%= render partial: 'azure_ad', locals: { provider: provider } %>
<% end %>
<% if lookup_context.exists?(provider, 'users/settings/account/connected_accounts', true) %>
<%= render partial: provider, locals: { provider: provider } %>
<% elsif ApplicationSettings.instance.values['azure_ad_apps']&.find { |v| v['provider_name'] == provider } %>
<%= render partial: 'azure_ad', locals: { provider: provider } %>
<% end %>
<% end %>
<% else %>

View file

@ -0,0 +1,23 @@
<div class="modal fade" id="unlinkOktaModal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="<%= t('general.close') %>">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" >
<%= t('users.settings.account.connected_accounts.okta.unlink_modal.title') %>
</h4>
</div>
<div class="modal-body">
<p><%= t('users.settings.account.connected_accounts.okta.unlink_modal.description_1') %></p>
</div>
<div class="modal-footer">
<%= form_tag(unlink_connected_account_path, method: :delete) do %>
<%= hidden_field_tag :provider, provider %>
<%= submit_tag t('users.settings.account.connected_accounts.okta.unlink_modal.submit_button'), class: 'btn btn-danger' %>
<% end %>
</div>
</div>
</div>
</div>

View file

@ -2572,6 +2572,15 @@ en:
title: "Unlink Azure AD account?"
description_1: "Are you sure you would like unlink Azure AD and SciNote accounts?"
submit_button: "Submit"
okta:
title: "Your Okta Account"
connect_hint: "Allows you to sign in with your Okta account."
connected: "Connected"
unlink_button: "Unlink"
unlink_modal:
title: "Unlink Okta account?"
description_1: "Are you sure you would like unlink Okta and SciNote accounts?"
submit_button: "Submit"
errors:
not_found: "You have no Connected accounts for this provider"
generic: "Unable to unlink linked account"