@@ -31,7 +31,7 @@ class Runners < Grape::API
31
31
# GET /runners/:id
32
32
get ':id' do
33
33
runner = get_runner ( params [ :id ] )
34
- can_show_runner? ( runner ) unless current_user . is_admin?
34
+ authenticate_show_runner! ( runner )
35
35
36
36
present runner , with : Entities ::RunnerDetails , user_is_admin : current_user . is_admin?
37
37
end
@@ -47,7 +47,7 @@ class Runners < Grape::API
47
47
# PUT /runners/:id
48
48
put ':id' do
49
49
runner = get_runner ( params [ :id ] )
50
- can_update_runner? ( runner ) unless current_user . is_admin?
50
+ authenticate_update_runner! ( runner )
51
51
52
52
attrs = attributes_for_keys [ :description , :active , :tag_list ]
53
53
if runner . update ( attrs )
@@ -65,7 +65,7 @@ class Runners < Grape::API
65
65
# DELETE /runners/:id
66
66
delete ':id' do
67
67
runner = get_runner ( params [ :id ] )
68
- can_delete_runner? ( runner )
68
+ authenticate_delete_runner! ( runner )
69
69
runner . destroy!
70
70
71
71
present runner , with : Entities ::RunnerDetails
@@ -93,7 +93,7 @@ class Runners < Grape::API
93
93
# POST /projects/:id/runners/:runner_id
94
94
post ':id/runners/:runner_id' do
95
95
runner = get_runner ( params [ :runner_id ] )
96
- can_enable_runner? ( runner )
96
+ authenticate_enable_runner! ( runner )
97
97
Ci ::RunnerProject . create ( runner : runner , project : user_project )
98
98
99
99
present runner , with : Entities ::Runner
@@ -111,7 +111,7 @@ class Runners < Grape::API
111
111
not_found! ( 'Runner' ) unless runner_project
112
112
113
113
runner = runner_project . runner
114
- forbidden! ( "Can't disable runner - only one project associated with it . Please remove runner instead" ) if runner . projects . count == 1
114
+ forbidden! ( "Only one project associated with the runner . Please remove the runner instead" ) if runner . projects . count == 1
115
115
116
116
runner_project . destroy
117
117
@@ -137,34 +137,32 @@ def get_runner(id)
137
137
runner
138
138
end
139
139
140
- def can_show_runner? ( runner )
141
- return true if runner . is_shared
142
- forbidden! ( "Can't show runner's details - no access granted" ) unless user_can_access_runner? ( runner )
140
+ def authenticate_show_runner! ( runner )
141
+ return if runner . is_shared || current_user . is_admin?
142
+ forbidden! ( "No access granted" ) unless user_can_access_runner? ( runner )
143
143
end
144
144
145
- def can_update_runner? ( runner )
146
- return true if current_user . is_admin?
147
- forbidden! ( "Can't update shared runner " ) if runner . is_shared?
148
- forbidden! ( "Can't update runner - no access granted" ) unless user_can_access_runner? ( runner )
145
+ def authenticate_update_runner! ( runner )
146
+ return if current_user . is_admin?
147
+ forbidden! ( "Runner is shared" ) if runner . is_shared?
148
+ forbidden! ( "No access granted" ) unless user_can_access_runner? ( runner )
149
149
end
150
150
151
- def can_delete_runner? ( runner )
152
- return true if current_user . is_admin?
153
- forbidden! ( "Can't delete shared runner " ) if runner . is_shared?
154
- forbidden! ( "Can't delete runner - associated with more than one project" ) if runner . projects . count > 1
155
- forbidden! ( "Can't delete runner - no access granted" ) unless user_can_access_runner? ( runner )
151
+ def authenticate_delete_runner! ( runner )
152
+ return if current_user . is_admin?
153
+ forbidden! ( "Runner is shared" ) if runner . is_shared?
154
+ forbidden! ( "Runner associated with more than one project" ) if runner . projects . count > 1
155
+ forbidden! ( "No access granted" ) unless user_can_access_runner? ( runner )
156
156
end
157
157
158
- def can_enable_runner? ( runner )
159
- forbidden! ( "Can't enable shared runner directly " ) if runner . is_shared?
160
- return true if current_user . is_admin?
161
- forbidden! ( "Can't update runner - no access granted" ) unless user_can_access_runner? ( runner )
158
+ def authenticate_enable_runner! ( runner )
159
+ forbidden! ( "Runner is shared" ) if runner . is_shared?
160
+ return if current_user . is_admin?
161
+ forbidden! ( "No access granted" ) unless user_can_access_runner? ( runner )
162
162
end
163
163
164
164
def user_can_access_runner? ( runner )
165
- runner . projects . inject ( false ) do |final , project |
166
- final || abilities . allowed? ( current_user , :admin_project , project )
167
- end
165
+ current_user . ci_authorized_runners . exists? ( runner . id )
168
166
end
169
167
end
170
168
end
0 commit comments