|
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 |
- |
|
|