parent
							
								
									70989cbfaf
								
							
						
					
					
						commit
						faecaf913c
					
				| @ -0,0 +1,98 @@ | ||||
| package NGCP::Panel::Field::URI; | ||||
| 
 | ||||
| use Sipwise::Base; | ||||
| use HTML::FormHandler::Moose; | ||||
| extends 'HTML::FormHandler::Field::Text'; | ||||
| use NGCP::Panel::Utils::Subscriber; | ||||
| 
 | ||||
| our $class_messages = { | ||||
|     'uri_format' => 'URI must be in format "username", "username@domain" or phone number', | ||||
| }; | ||||
| 
 | ||||
| sub get_class_messages  { | ||||
|     my $self = shift; | ||||
|     return { | ||||
|         %{ $self->next::method }, | ||||
|         %$class_messages, | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| apply( | ||||
|     [ | ||||
|         { | ||||
|             transform => sub {  | ||||
| 	    	    lc($_[0]); | ||||
| 		    } | ||||
|         }, | ||||
|         { | ||||
|             transform => sub { | ||||
|                 my ($v, $field) = @_; | ||||
|                 my $c = $field->form->ctx; | ||||
|                 return $v unless($c); | ||||
| 
 | ||||
|                 my $sub = $c->stash->{subscriber}; | ||||
|                 return $v unless($sub); | ||||
| 
 | ||||
|                 $v =~ s/^sips?://; | ||||
|                 my ($user, $domain) = split(/\@/, $v); | ||||
|                 $domain = $sub->domain->domain unless($domain); | ||||
|                 my $uri; | ||||
| 
 | ||||
|                 if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") { | ||||
|                     $user = NGCP::Panel::Utils::Subscriber::apply_rewrite( | ||||
|                         c => $c, subscriber => $sub, number => $user, direction => 'callee_in' | ||||
|                     ); | ||||
|                 } | ||||
|                 $uri = 'sip:' . $user . '@' . $domain; | ||||
| 
 | ||||
|                 return $uri; | ||||
| 		    } | ||||
|         }, | ||||
|         { | ||||
|             check => sub { | ||||
|                 my ( $value, $field ) = @_; | ||||
|                 my ($user, $domain) = split(/\@/, $value); | ||||
|                 my $checked = $value if $user && $domain; # TODO: proper check | ||||
|                 $field->value($checked) | ||||
|                     if $checked; | ||||
|             }, | ||||
|             message => sub { | ||||
|                 my ( $value, $field ) = @_; | ||||
|                 return $field->get_message('uri_format'); | ||||
|             }, | ||||
|         } | ||||
|     ] | ||||
| ); | ||||
| 
 | ||||
| has '+deflate_method'  => ( default => sub { \&uri_deflate } ); | ||||
| 
 | ||||
| sub uri_deflate { | ||||
|     my ( $field, $v ) = @_; | ||||
| 
 | ||||
|     my $c = $field->form->ctx; | ||||
|     return $v unless($c); | ||||
| 
 | ||||
|     my $sub = $c->stash->{subscriber}; | ||||
|     return $v unless($sub); | ||||
| 
 | ||||
|     $v =~ s/^sips?://; | ||||
|     my $t; | ||||
|     my ($user, $domain) = split(/\@/, $v); | ||||
|     if($c->user->roles eq "subscriberadmin" || $c->user->roles eq "subscriber") { | ||||
|         $user = NGCP::Panel::Utils::Subscriber::apply_rewrite( | ||||
|             c => $c, subscriber => $sub, number => $user, direction => 'caller_out' | ||||
|         ); | ||||
|     } | ||||
|     if($domain eq $sub->domain->domain) { | ||||
|         $v = $user; | ||||
|     } else { | ||||
|         $v = $user . '@' . $domain; | ||||
|     } | ||||
|     return $v;     | ||||
| } | ||||
| 
 | ||||
| 1; | ||||
| __PACKAGE__->meta->make_immutable; | ||||
| use namespace::autoclean | ||||
| 
 | ||||
| # vim: set tabstop=4 expandtab: | ||||
					Loading…
					
					
				
		Reference in new issue