Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
ea10f664
Commit
ea10f664
authored
Sep 11, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
917df161
bfaa96d5
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
69 additions
and
3 deletions
+69
-3
app/controllers/admin/applications_controller.rb
app/controllers/admin/applications_controller.rb
+3
-1
app/models/oauth_access_token.rb
app/models/oauth_access_token.rb
+2
-0
app/views/admin/applications/index.html.haml
app/views/admin/applications/index.html.haml
+2
-1
changelogs/unreleased/sh-fix-oauth-application-page.yml
changelogs/unreleased/sh-fix-oauth-application-page.yml
+5
-0
db/post_migrate/20190910000130_add_index_on_application_id_on_oauth_access_tokens.rb
...130_add_index_on_application_id_on_oauth_access_tokens.rb
+17
-0
db/schema.rb
db/schema.rb
+2
-1
spec/controllers/admin/applications_controller_spec.rb
spec/controllers/admin/applications_controller_spec.rb
+10
-0
spec/models/oauth_access_token_spec.rb
spec/models/oauth_access_token_spec.rb
+28
-0
No files found.
app/controllers/admin/applications_controller.rb
View file @
ea10f664
...
...
@@ -7,7 +7,9 @@ class Admin::ApplicationsController < Admin::ApplicationController
before_action
:load_scopes
,
only:
[
:new
,
:create
,
:edit
,
:update
]
def
index
@applications
=
ApplicationsFinder
.
new
.
execute
applications
=
ApplicationsFinder
.
new
.
execute
@applications
=
Kaminari
.
paginate_array
(
applications
).
page
(
params
[
:page
])
@application_counts
=
OauthAccessToken
.
distinct_resource_owner_counts
(
@applications
)
end
def
show
...
...
app/models/oauth_access_token.rb
View file @
ea10f664
...
...
@@ -6,6 +6,8 @@ class OauthAccessToken < Doorkeeper::AccessToken
alias_attribute
:user
,
:resource_owner
scope
:distinct_resource_owner_counts
,
->
(
applications
)
{
where
(
application:
applications
).
distinct
.
group
(
:application_id
).
count
(
:resource_owner_id
)
}
def
scopes
=
(
value
)
if
value
.
is_a?
(
Array
)
super
(
Doorkeeper
::
OAuth
::
Scopes
.
from_array
(
value
).
to_s
)
...
...
app/views/admin/applications/index.html.haml
View file @
ea10f664
...
...
@@ -19,7 +19,8 @@
%tr
{
:id
=>
"application_#{application.id}"
}
%td
=
link_to
application
.
name
,
admin_application_path
(
application
)
%td
=
application
.
redirect_uri
%td
=
application
.
access_tokens
.
map
(
&
:resource_owner_id
).
uniq
.
count
%td
=
@application_counts
[
application
.
id
].
to_i
%td
=
application
.
trusted?
?
'Y'
:
'N'
%td
=
link_to
'Edit'
,
edit_admin_application_path
(
application
),
class:
'btn btn-link'
%td
=
render
'delete_form'
,
application:
application
=
paginate
@applications
,
theme:
'gitlab'
changelogs/unreleased/sh-fix-oauth-application-page.yml
0 → 100644
View file @
ea10f664
---
title
:
Optimize /admin/applications so that it does not timeout
merge_request
:
32852
author
:
type
:
performance
db/post_migrate/20190910000130_add_index_on_application_id_on_oauth_access_tokens.rb
0 → 100644
View file @
ea10f664
# frozen_string_literal: true
class
AddIndexOnApplicationIdOnOauthAccessTokens
<
ActiveRecord
::
Migration
[
5.2
]
include
Gitlab
::
Database
::
MigrationHelpers
DOWNTIME
=
false
disable_ddl_transaction!
def
up
add_concurrent_index
:oauth_access_tokens
,
:application_id
end
def
down
remove_concurrent_index
:oauth_access_tokens
,
:application_id
end
end
db/schema.rb
View file @
ea10f664
...
...
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
2019_09_
05_22390
0
)
do
ActiveRecord
::
Schema
.
define
(
version:
2019_09_
10_00013
0
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"pg_trgm"
...
...
@@ -2390,6 +2390,7 @@ ActiveRecord::Schema.define(version: 2019_09_05_223900) do
t
.
datetime
"revoked_at"
t
.
datetime
"created_at"
,
null:
false
t
.
string
"scopes"
t
.
index
[
"application_id"
],
name:
"index_oauth_access_tokens_on_application_id"
t
.
index
[
"refresh_token"
],
name:
"index_oauth_access_tokens_on_refresh_token"
,
unique:
true
t
.
index
[
"resource_owner_id"
],
name:
"index_oauth_access_tokens_on_resource_owner_id"
t
.
index
[
"token"
],
name:
"index_oauth_access_tokens_on_token"
,
unique:
true
...
...
spec/controllers/admin/applications_controller_spec.rb
View file @
ea10f664
...
...
@@ -10,6 +10,16 @@ describe Admin::ApplicationsController do
sign_in
(
admin
)
end
describe
'GET #index'
do
render_views
it
'renders the application form'
do
get
:index
expect
(
response
).
to
have_http_status
(
200
)
end
end
describe
'GET #new'
do
it
'renders the application form'
do
get
:new
...
...
spec/models/oauth_access_token_spec.rb
0 → 100644
View file @
ea10f664
# frozen_string_literal: true
require
'spec_helper'
describe
OauthAccessToken
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:app_one
)
{
create
(
:oauth_application
)
}
let
(
:app_two
)
{
create
(
:oauth_application
)
}
let
(
:app_three
)
{
create
(
:oauth_application
)
}
let
(
:tokens
)
{
described_class
.
all
}
before
do
create
(
:oauth_access_token
,
application_id:
app_one
.
id
)
create_list
(
:oauth_access_token
,
2
,
resource_owner:
user
,
application_id:
app_two
.
id
)
end
it
'returns unique owners'
do
expect
(
tokens
.
count
).
to
eq
(
3
)
expect
(
tokens
.
distinct_resource_owner_counts
([
app_one
])).
to
eq
({
app_one
.
id
=>
1
})
expect
(
tokens
.
distinct_resource_owner_counts
([
app_two
])).
to
eq
({
app_two
.
id
=>
1
})
expect
(
tokens
.
distinct_resource_owner_counts
([
app_three
])).
to
eq
({})
expect
(
tokens
.
distinct_resource_owner_counts
([
app_one
,
app_two
]))
.
to
eq
({
app_one
.
id
=>
1
,
app_two
.
id
=>
1
})
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment