[#43644] Revoke access to Storage granted by OAuth
https://community.openproject.org/work_packages/43644feature/43644-revoke-access-to-storage-granted-by-oauth
parent
d1ffd42fb9
commit
3144fe9883
@ -0,0 +1,77 @@ |
||||
<p><%= t(:text_client_access_token_hint) %></p> |
||||
|
||||
<% if !granted_applications.empty? %> |
||||
<div class="generic-table--container"> |
||||
<div class="generic-table--results-container" style="max-height: 340px;"> |
||||
<table id="access-token-table" class="generic-table"> |
||||
<colgroup> |
||||
<col opHighlightCol> |
||||
<col opHighlightCol> |
||||
<col opHighlightCol> |
||||
<col opHighlightCol> |
||||
</colgroup> |
||||
<thead> |
||||
<tr> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= t('attributes.name') %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= User.human_attribute_name(:created_at) %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= I18n.t('my_account.access_tokens.headers.expiration') %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= I18n.t('my_account.access_tokens.headers.action') %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<% granted_applications.each do |application, tokens| %> |
||||
<% latest = tokens.sort_by(&:created_at).last %> |
||||
<tr id="oauth-application-grant-<%= application.id %>"> |
||||
<td> |
||||
<%= t('oauth.application.named', name: application.name) %> |
||||
|
||||
(<%= t('oauth.x_active_tokens', count: tokens.count) %>) |
||||
</td> |
||||
<td> |
||||
<span><%= format_time(latest.created_at) %></span> |
||||
</td> |
||||
<td> |
||||
<span><%= format_time(latest.created_at + latest.expires_in.seconds) %></span> |
||||
</td> |
||||
<td> |
||||
<%= link_to t(:button_disconnect), |
||||
revoke_my_oauth_application_path(application_id: application.id), |
||||
data: { confirm: I18n.t('oauth.disconnect_my_application_confirmation', |
||||
token_count: t('oauth.x_active_tokens', count: tokens.count)) }, |
||||
method: :post, |
||||
class: 'icon icon-remove-link' %> |
||||
</td> |
||||
</tr> |
||||
<% end %> |
||||
<%= call_hook(:view_access_tokens_table, user: @user) %> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
<% else %> |
||||
<%= no_results_box %> |
||||
<% end %> |
@ -0,0 +1,117 @@ |
||||
<p><%= t(:text_provided_access_token_hint) %></p> |
||||
|
||||
<% if has_tokens? %> |
||||
<div class="generic-table--container"> |
||||
<div class="generic-table--results-container" style="max-height: 340px;"> |
||||
<table id="access-token-table" class="generic-table"> |
||||
<colgroup> |
||||
<col opHighlightCol> |
||||
<col opHighlightCol> |
||||
<col opHighlightCol> |
||||
<col opHighlightCol> |
||||
</colgroup> |
||||
<thead> |
||||
<tr> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= t('attributes.name') %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= User.human_attribute_name(:created_at) %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= I18n.t('my_account.access_tokens.headers.expiration') %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
<th> |
||||
<div class="generic-table--sort-header-outer"> |
||||
<div class="generic-table--sort-header"> |
||||
<%= I18n.t('my_account.access_tokens.headers.action') %> |
||||
</div> |
||||
</div> |
||||
</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<% if Setting.feeds_enabled? %> |
||||
<% if @user.rss_token %> |
||||
<tr> |
||||
<td><%= t(:label_feeds_access_key_type) %></td> |
||||
<td> |
||||
<span title="<%= format_time(@user.rss_token.created_at) %>"> |
||||
<%= format_time(@user.rss_token.created_at.to_s) %> |
||||
</span> |
||||
</td> |
||||
<td><%= I18n.t('my_account.access_tokens.indefinite_expiration') %></td> |
||||
<td> |
||||
<%= link_to t(:button_reset), |
||||
{ action: 'generate_rss_key' }, |
||||
method: :post, |
||||
class: 'icon icon-delete' %> |
||||
</td> |
||||
</tr> |
||||
<% else %> |
||||
<tr> |
||||
<td><%= t(:label_feeds_access_key_type) %></td> |
||||
<td><%= t(:label_missing_feeds_access_key) %></td> |
||||
<td></td> |
||||
<td> |
||||
<%= link_to t(:button_generate), |
||||
{ action: 'generate_rss_key' }, |
||||
method: :post, |
||||
class: 'icon icon-key' %> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
<% end %> |
||||
<% end %> |
||||
<% if Setting.rest_api_enabled? %> |
||||
<% if @user.api_token %> |
||||
<tr> |
||||
<td><%= t(:label_api_access_key_type) %></td> |
||||
<td> |
||||
<span title="<%= format_time(@user.api_token.created_at) %>"> |
||||
<%= format_time(@user.api_token.created_at.to_s) %> |
||||
</span> |
||||
</td> |
||||
<td><%= I18n.t('my_account.access_tokens.indefinite_expiration') %></td> |
||||
<td> |
||||
<%= link_to t(:button_reset), |
||||
{ action: 'generate_api_key' }, |
||||
method: :post, |
||||
class: 'icon icon-delete' %> |
||||
</td> |
||||
</tr> |
||||
<% else %> |
||||
<tr> |
||||
<td><%= t(:label_api_access_key_type) %></td> |
||||
<td><%= t(:label_missing_api_access_key) %></td> |
||||
<td></td> |
||||
<td> |
||||
<%= link_to t(:button_generate), |
||||
{ action: 'generate_api_key' }, |
||||
method: :post, |
||||
class: 'icon icon-key' %> |
||||
</a> |
||||
</td> |
||||
</tr> |
||||
<% end %> |
||||
<% end %> |
||||
<%= call_hook(:view_access_tokens_table, user: @user) %> |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
<% else %> |
||||
<%= no_results_box %> |
||||
<% end %> |
After Width: | Height: | Size: 129 KiB |
Loading…
Reference in new issue