TT#65651 - Display correct DBIx error on duplicate subscriber

* Add check for provisioning subscriber
	   webusername so the API trhows the correct
	   error when encountering a duplicate

	 * This implementation relies on the DBIx
	   error to keep the database integrity

Change-Id: Ica3e2673cead28759ad25f5edb3f7ca0f32e1c1e
changes/77/33477/2
Flaviu Mates 7 years ago
parent 4245f60140
commit 28cb73e58e

@ -406,10 +406,20 @@ sub POST :Allow {
c => $c, schema => $schema,
events_to_create => \@events_to_create,
);
} catch(DBIx::Class::Exception $e where { /Duplicate entry '([^']+)' for key 'number_idx'/ }) {
$e =~ /Duplicate entry '([^']+)' for key 'number_idx'/;
$c->log->error("failed to create subscriber, number " . $c->qs($1) . " already exists"); # TODO: user, message, trace, ...
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Number '" . $1 . "' already exists.", "Number already exists.");
} catch(DBIx::Class::Exception $e where { /Duplicate entry '([^']+)' for key ('number_idx'|'webuser_dom_idx')/ }) {
$e =~ /Duplicate entry '([^']+)' for key ('number_idx'|'webuser_dom_idx')/;
my $log_error;
my @http_errors;
if ($2 eq '\'number_idx\'') {
$log_error = "failed to create subscriber, number " . $c->qs($1) . " already exists";
@http_errors = ("Number '" . $1 . "' already exists.", "Number already exists.");
}
elsif ($2 eq '\'webuser_dom_idx\'') {
$log_error = "failed to create subscriber, webusername-domain combination " . $c->qs($1) . " already exists";
@http_errors = ("Webusername-Domain combination '" . $1 . "' already exists.", "Webusername-Domain combination already exists.");
}
$c->log->error($log_error); # TODO: user, message, trace, ...
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, $http_errors[0], $http_errors[1]);
last;
} catch($e) {
if (ref $error_info->{extended} eq 'HASH' && $error_info->{extended}->{response_code}) {

Loading…
Cancel
Save