Lines 132-137
sub delete {
Link Here
|
132 |
}; |
132 |
}; |
133 |
} |
133 |
} |
134 |
|
134 |
|
|
|
135 |
=head3 public_create |
136 |
|
137 |
Create a public virtual shelf |
138 |
|
139 |
=cut |
140 |
|
141 |
sub public_create { |
142 |
my $c = shift->openapi->valid_input or return; |
143 |
|
144 |
my $user = $c->stash('koha.user'); |
145 |
my $json_body = $c->req->json; |
146 |
|
147 |
$json_body->{owner} = $user->id; |
148 |
|
149 |
return try { |
150 |
|
151 |
my $list = Koha::Virtualshelf->new_from_api($json_body); |
152 |
$list->store->discard_changes; |
153 |
$c->res->headers->location( $c->req->url->to_string . '/' . $list->id ); |
154 |
return $c->render( |
155 |
status => 201, |
156 |
openapi => $c->objects->to_api($list), |
157 |
); |
158 |
} catch { |
159 |
$c->unhandled_exception($_); |
160 |
}; |
161 |
} |
162 |
|
163 |
=head3 public_read |
164 |
|
165 |
List the contents of a public virtual shelf or a virtual shelf you own |
166 |
|
167 |
=cut |
168 |
|
169 |
sub public_read { |
170 |
my $c = shift->openapi->valid_input or return; |
171 |
my $user = $c->stash('koha.user'); |
172 |
|
173 |
my $list = Koha::Virtualshelves->find( $c->param('list_id') ); |
174 |
|
175 |
#if the list owner != to the user id, return 403 |
176 |
unless ( $list->owner == $user->id || $list->public == 1 ) { |
177 |
return $c->render( |
178 |
status => 403, |
179 |
openapi => { |
180 |
error => "Forbidden - you can only view your own lists or lists that are public.", |
181 |
error_code => "forbidden", |
182 |
}, |
183 |
); |
184 |
} |
185 |
return $c->render_resource_not_found("List") |
186 |
unless $list; |
187 |
|
188 |
return $c->render( status => 200, openapi => $c->objects->to_api($list), ); |
189 |
} |
190 |
|
191 |
=head3 public_update |
192 |
|
193 |
Update a public virtual shelf or a shelf you own |
194 |
|
195 |
=cut |
196 |
|
197 |
sub public_update { |
198 |
my $c = shift->openapi->valid_input or return; |
199 |
my $user = $c->stash('koha.user'); |
200 |
|
201 |
my $list = Koha::Virtualshelves->find( $c->param('list_id') ); |
202 |
|
203 |
#if the list owner != to the user id, return 403 |
204 |
if ( $list->owner != $user->id ) { |
205 |
return $c->render( |
206 |
status => 403, |
207 |
openapi => { |
208 |
error => "Forbidden - you can only update your own lists", |
209 |
error_code => "forbidden", |
210 |
}, |
211 |
); |
212 |
} |
213 |
|
214 |
#if the allow_change_from_owner is false, return 403 |
215 |
if ( $list->allow_change_from_owner == 0 ) { |
216 |
return $c->render( |
217 |
status => 403, |
218 |
openapi => { |
219 |
error => "Forbidden - you can't update this list", |
220 |
error_code => "forbidden", |
221 |
}, |
222 |
); |
223 |
} |
224 |
|
225 |
return $c->render_resource_not_found("List") |
226 |
unless $list; |
227 |
|
228 |
return try { |
229 |
$list->set_from_api( $c->req->json ); |
230 |
$list->store(); |
231 |
return $c->render( status => 200, openapi => $c->objects->to_api($list), ); |
232 |
} catch { |
233 |
$c->unhandled_exception($_); |
234 |
}; |
235 |
} |
236 |
|
237 |
=head3 public_delete |
238 |
|
239 |
Delete a public virtual shelf you own |
240 |
|
241 |
=cut |
242 |
|
243 |
sub public_delete { |
244 |
my $c = shift->openapi->valid_input or return; |
245 |
my $user = $c->stash('koha.user'); |
246 |
|
247 |
my $list = Koha::Virtualshelves->find( $c->param('list_id') ); |
248 |
return $c->render_resource_not_found("List") |
249 |
unless $list; |
250 |
|
251 |
#if the list owner != to the user id, return 403 |
252 |
if ( $list->owner != $user->id ) { |
253 |
return $c->render( |
254 |
status => 403, |
255 |
openapi => { |
256 |
error => "Forbidden - you can only update your own lists", |
257 |
error_code => "forbidden", |
258 |
}, |
259 |
); |
260 |
} |
261 |
|
262 |
#if the allow_change_from_owner is false, return 403 |
263 |
if ( $list->allow_change_from_owner == 0 ) { |
264 |
return $c->render( |
265 |
status => 403, |
266 |
openapi => { |
267 |
error => "Forbidden - you can't update this list", |
268 |
error_code => "forbidden", |
269 |
}, |
270 |
); |
271 |
} |
272 |
|
273 |
return try { |
274 |
$list->delete; |
275 |
return $c->render_resource_deleted; |
276 |
} catch { |
277 |
$c->unhandled_exception($_); |
278 |
}; |
279 |
} |
280 |
|
135 |
=head3 list_public |
281 |
=head3 list_public |
136 |
|
282 |
|
137 |
=cut |
283 |
=cut |
138 |
- |
|
|