Commit 33ba32e6 authored by Phil Hughes's avatar Phil Hughes

Applications tab on profile settings

Closes #13855
parent f8c4dc97
...@@ -175,3 +175,17 @@ ...@@ -175,3 +175,17 @@
color: $profile-settings-link-color; color: $profile-settings-link-color;
} }
} }
.profile-settings-message {
line-height: 32px;
color: #9E8E60;
background-color: #FBF2D9;
border: 1px solid #F0E2BB;
border-radius: 3px;
}
.oauth-applications {
form {
display: inline-block;
}
}
...@@ -11,6 +11,10 @@ class Oauth::ApplicationsController < Doorkeeper::ApplicationsController ...@@ -11,6 +11,10 @@ class Oauth::ApplicationsController < Doorkeeper::ApplicationsController
head :forbidden and return head :forbidden and return
end end
def new
redirect_to applications_profile_url
end
def create def create
@application = Doorkeeper::Application.new(application_params) @application = Doorkeeper::Application.new(application_params)
...@@ -20,7 +24,7 @@ class Oauth::ApplicationsController < Doorkeeper::ApplicationsController ...@@ -20,7 +24,7 @@ class Oauth::ApplicationsController < Doorkeeper::ApplicationsController
flash[:notice] = I18n.t(:notice, scope: [:doorkeeper, :flash, :applications, :create]) flash[:notice] = I18n.t(:notice, scope: [:doorkeeper, :flash, :applications, :create])
redirect_to oauth_application_url(@application) redirect_to oauth_application_url(@application)
else else
render :new redirect_to applications_profile_url, flash: {application: @application}
end end
end end
......
...@@ -13,6 +13,7 @@ class ProfilesController < Profiles::ApplicationController ...@@ -13,6 +13,7 @@ class ProfilesController < Profiles::ApplicationController
@authorized_tokens = current_user.oauth_authorized_tokens @authorized_tokens = current_user.oauth_authorized_tokens
@authorized_anonymous_tokens = @authorized_tokens.reject(&:application) @authorized_anonymous_tokens = @authorized_tokens.reject(&:application)
@authorized_apps = @authorized_tokens.map(&:application).uniq - [nil] @authorized_apps = @authorized_tokens.map(&:application).uniq - [nil]
@application = flash[:application] || Doorkeeper::Application.new
end end
def update def update
......
- submit_btn_css ||= 'btn btn-link btn-remove btn-sm' - submit_btn_css ||= 'btn btn-link btn-remove btn-sm'
= form_tag oauth_application_path(application) do = form_tag oauth_application_path(application) do
%input{:name => "_method", :type => "hidden", :value => "delete"}/ %input{:name => "_method", :type => "hidden", :value => "delete"}/
= submit_tag 'Destroy', onclick: "return confirm('Are you sure?')", class: submit_btn_css - if defined? small
\ No newline at end of file = button_tag type: "submit", class: "btn btn-transparent", data: { confirm: "Are you sure?" } do
%span.sr-only
Destroy
= icon('trash')
- else
= submit_tag 'Destroy', data: { confirm: "Are you sure?" }, class: submit_btn_css
= form_for application, url: doorkeeper_submit_path(application), html: {class: 'form-horizontal', role: 'form'} do |f| = form_for application, url: doorkeeper_submit_path(application), html: {role: 'form'} do |f|
- if application.errors.any? - if application.errors.any?
.alert.alert-danger .alert.alert-danger
%ul %ul
...@@ -6,25 +6,20 @@ ...@@ -6,25 +6,20 @@
%li= msg %li= msg
.form-group .form-group
= f.label :name, class: 'control-label' = f.label :name, class: 'label-light'
= f.text_field :name, class: 'form-control', required: true
.col-sm-10
= f.text_field :name, class: 'form-control', required: true
.form-group .form-group
= f.label :redirect_uri, class: 'control-label' = f.label :redirect_uri, class: 'label-light'
= f.text_area :redirect_uri, class: 'form-control', required: true
.col-sm-10
= f.text_area :redirect_uri, class: 'form-control', required: true
%span.help-block
Use one line per URI
- if Doorkeeper.configuration.native_redirect_uri
%span.help-block %span.help-block
Use one line per URI Use
- if Doorkeeper.configuration.native_redirect_uri %code= Doorkeeper.configuration.native_redirect_uri
%span.help-block for local tests
Use
%code= Doorkeeper.configuration.native_redirect_uri
for local tests
.form-actions .prepend-top-default
= f.submit 'Submit', class: "btn btn-create" = f.submit 'Add application', class: "btn btn-create"
= link_to "Cancel", applications_profile_path, class: "btn btn-cancel"
- page_title "Applications" - page_title "Applications"
- header_title page_title, applications_profile_path - header_title page_title, applications_profile_path
.alert.alert-help.prepend-top-default .row.prepend-top-default
- if user_oauth_applications? .col-lg-3.profile-settings-sidebar
Manage applications that can use GitLab as an OAuth provider, %h4.prepend-top-0
and applications that you've authorized to use your account. = page_title
- else %p
Manage applications that you've authorized to use your account. - if user_oauth_applications?
Manage applications that can use GitLab as an OAuth provider,
and applications that you've authorized to use your account.
- else
Manage applications that you've authorized to use your account.
.col-lg-9
- if user_oauth_applications?
%h5
Add new application
= render 'doorkeeper/applications/form', application: @application
%hr
- if user_oauth_applications?
.oauth-applications
%h5
Your applications (#{@applications.size})
- if @applications.any?
.table-responsive
%table.table.table-striped
%thead
%tr
%th Name
%th Callback URL
%th Clients
%th{width: 105}
%tbody
- @applications.each do |application|
%tr{:id => "application_#{application.id}"}
%td= link_to application.name, oauth_application_path(application)
%td
- application.redirect_uri.split.each do |uri|
%div= uri
%td= application.access_tokens.count
%td
= link_to edit_oauth_application_path(application), class: "btn btn-transparent append-right-5" do
%span.sr-only
Edit
= icon('pencil')
= render 'doorkeeper/applications/delete_form', application: application, small: true
- else
.profile-settings-message.text-center
You don't have any applications
.oauth-authorized-applications.prepend-top-20
- if user_oauth_applications?
%h5
Authorized applications (#{@authorized_tokens.size})
- if user_oauth_applications? - if @authorized_tokens.any?
.oauth-applications .table-responsive
%h3 %table.table.table-striped
Your applications %thead
.pull-right %tr
= link_to 'New Application', new_oauth_application_path, class: 'btn btn-success' %th Name
- if @applications.any? %th Authorized At
.table-holder %th Scope
%table.table.table-striped %th
%thead %tbody
%tr - @authorized_apps.each do |app|
%th Name - token = app.authorized_tokens.order('created_at desc').first
%th Callback URL %tr{:id => "application_#{app.id}"}
%th Clients %td= app.name
%th %td= token.created_at
%th %td= token.scopes
%tbody %td= render 'doorkeeper/authorized_applications/delete_form', application: app
- @applications.each do |application| - @authorized_anonymous_tokens.each do |token|
%tr{:id => "application_#{application.id}"} %tr
%td= link_to application.name, oauth_application_path(application) %td
%td Anonymous
- application.redirect_uri.split.each do |uri| %div.help-block
%div= uri %em Authorization was granted by entering your username and password in the application.
%td= application.access_tokens.count %td= token.created_at
%td= link_to 'Edit', edit_oauth_application_path(application), class: 'btn btn-link btn-sm' %td= token.scopes
%td= render 'doorkeeper/applications/delete_form', application: application %td= render 'doorkeeper/authorized_applications/delete_form', token: token
- else
.oauth-authorized-applications.prepend-top-20 .profile-settings-message.text-center
- if user_oauth_applications? You don't have any authorized applications
%h3
Authorized applications
- if @authorized_tokens.any?
.table-holder
%table.table.table-striped
%thead
%tr
%th Name
%th Authorized At
%th Scope
%th
%tbody
- @authorized_apps.each do |app|
- token = app.authorized_tokens.order('created_at desc').first
%tr{:id => "application_#{app.id}"}
%td= app.name
%td= token.created_at
%td= token.scopes
%td= render 'doorkeeper/authorized_applications/delete_form', application: app
- @authorized_anonymous_tokens.each do |token|
%tr
%td
Anonymous
%div.help-block
%em Authorization was granted by entering your username and password in the application.
%td= token.created_at
%td= token.scopes
%td= render 'doorkeeper/authorized_applications/delete_form', token: token
- else
%p.light You don't have any authorized applications
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment