Loading lib/Travelynx.pm +0 −26 Original line number Diff line number Diff line Loading @@ -169,11 +169,6 @@ sub startup { }; } ); $self->attr( token_types => sub { return [qw(status history travel import)]; } ); $self->attr( account_public_mask => sub { Loading Loading @@ -839,27 +834,6 @@ sub startup { } ); $self->helper( 'get_api_token' => sub { my ( $self, $uid ) = @_; $uid //= $self->current_user->{id}; my $token = {}; my $res = $self->pg->db->select( 'tokens', [ 'type', 'token' ], { user_id => $uid } ); for my $entry ( $res->hashes->each ) { $token->{ $self->app->token_types->[ $entry->{type} - 1 ] } = $entry->{token}; } return $token; } ); $self->helper( 'run_hook' => sub { my ( $self, $uid, $reason, $callback ) = @_; Loading lib/Travelynx/Controller/Account.pm +9 −6 Original line number Diff line number Diff line Loading @@ -388,10 +388,11 @@ sub verify { sub delete { my ($self) = @_; my $uid = $self->current_user->{id}; if ( $self->validation->csrf_protect->has_error('csrf_token') ) { $self->render( 'account', api_token => $self->get_api_token, api_token => $self->users->get_api_token( uid => $uid ), invalid => 'csrf', ); return; Loading @@ -407,15 +408,15 @@ sub delete { { $self->render( 'account', api_token => $self->get_api_token, api_token => $self->users->get_api_token( uid => $uid ), invalid => 'deletion password' ); return; } $self->users->flag_deletion( uid => $self->current_user->{id} ); $self->users->flag_deletion( uid => $uid ); } else { $self->users->unflag_deletion( uid => $self->current_user->{id} ); $self->users->unflag_deletion( uid => $uid ); } $self->redirect_to('account'); } Loading Loading @@ -950,9 +951,11 @@ sub confirm_mail { sub account { my ($self) = @_; my $uid = $self->current_user->{id}; $self->render( 'account', api_token => $self->get_api_token ); $self->users->mark_seen( uid => $self->current_user->{id} ); $self->render( 'account', api_token => $self->users->get_api_token( uid => $uid ) ); $self->users->mark_seen( uid => $uid ); } sub json_export { Loading lib/Travelynx/Controller/Api.pm +6 −5 Original line number Diff line number Diff line Loading @@ -35,10 +35,11 @@ sub documentation { my ($self) = @_; if ( $self->is_user_authenticated ) { my $uid = $self->current_user->{id}; $self->render( 'api_documentation', uid => $self->current_user->{id}, api_token => $self->get_api_token, uid => $uid, api_token => $self->users->get_api_token( uid => $uid ), ); } else { Loading Loading @@ -79,7 +80,7 @@ sub get_v1 { return; } my $token = $self->get_api_token($uid); my $token = $self->users->get_api_token( uid => $uid ); if ( not $api_token or not $token->{$api_action} or $api_token ne $token->{$api_action} ) Loading Loading @@ -145,7 +146,7 @@ sub travel_v1 { return; } my $token = $self->get_api_token($uid); my $token = $self->users->get_api_token( uid => $uid ); if ( not $token->{'travel'} or $api_token ne $token->{'travel'} ) { $self->render( json => { Loading Loading @@ -411,7 +412,7 @@ sub import_v1 { return; } my $token = $self->get_api_token($uid); my $token = $self->users->get_api_token($uid); if ( not $token->{'import'} or $api_token ne $token->{'import'} ) { $self->render( json => { Loading lib/Travelynx/Model/Users.pm +18 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ my @sb_templates = ( [ 'bahn.expert/regional', 'https://bahn.expert/regional/{name}#{id}' ], ); my @token_types = (qw(status history travel import)); sub new { my ( $class, %opt ) = @_; Loading Loading @@ -86,6 +88,22 @@ sub verify_registration_token { return; } sub get_api_token { my ( $self, %opt ) = @_; my $db = $opt{db} // $self->{pg}->db; my $uid = $opt{uid}; my $token = {}; my $res = $db->select( 'tokens', [ 'type', 'token' ], { user_id => $uid } ); for my $entry ( $res->hashes->each ) { $token->{ $token_types[ $entry->{type} - 1 ] } = $entry->{token}; } return $token; } sub get_uid_by_name_and_mail { my ( $self, %opt ) = @_; my $db = $opt{db} // $self->{pg}->db; Loading Loading
lib/Travelynx.pm +0 −26 Original line number Diff line number Diff line Loading @@ -169,11 +169,6 @@ sub startup { }; } ); $self->attr( token_types => sub { return [qw(status history travel import)]; } ); $self->attr( account_public_mask => sub { Loading Loading @@ -839,27 +834,6 @@ sub startup { } ); $self->helper( 'get_api_token' => sub { my ( $self, $uid ) = @_; $uid //= $self->current_user->{id}; my $token = {}; my $res = $self->pg->db->select( 'tokens', [ 'type', 'token' ], { user_id => $uid } ); for my $entry ( $res->hashes->each ) { $token->{ $self->app->token_types->[ $entry->{type} - 1 ] } = $entry->{token}; } return $token; } ); $self->helper( 'run_hook' => sub { my ( $self, $uid, $reason, $callback ) = @_; Loading
lib/Travelynx/Controller/Account.pm +9 −6 Original line number Diff line number Diff line Loading @@ -388,10 +388,11 @@ sub verify { sub delete { my ($self) = @_; my $uid = $self->current_user->{id}; if ( $self->validation->csrf_protect->has_error('csrf_token') ) { $self->render( 'account', api_token => $self->get_api_token, api_token => $self->users->get_api_token( uid => $uid ), invalid => 'csrf', ); return; Loading @@ -407,15 +408,15 @@ sub delete { { $self->render( 'account', api_token => $self->get_api_token, api_token => $self->users->get_api_token( uid => $uid ), invalid => 'deletion password' ); return; } $self->users->flag_deletion( uid => $self->current_user->{id} ); $self->users->flag_deletion( uid => $uid ); } else { $self->users->unflag_deletion( uid => $self->current_user->{id} ); $self->users->unflag_deletion( uid => $uid ); } $self->redirect_to('account'); } Loading Loading @@ -950,9 +951,11 @@ sub confirm_mail { sub account { my ($self) = @_; my $uid = $self->current_user->{id}; $self->render( 'account', api_token => $self->get_api_token ); $self->users->mark_seen( uid => $self->current_user->{id} ); $self->render( 'account', api_token => $self->users->get_api_token( uid => $uid ) ); $self->users->mark_seen( uid => $uid ); } sub json_export { Loading
lib/Travelynx/Controller/Api.pm +6 −5 Original line number Diff line number Diff line Loading @@ -35,10 +35,11 @@ sub documentation { my ($self) = @_; if ( $self->is_user_authenticated ) { my $uid = $self->current_user->{id}; $self->render( 'api_documentation', uid => $self->current_user->{id}, api_token => $self->get_api_token, uid => $uid, api_token => $self->users->get_api_token( uid => $uid ), ); } else { Loading Loading @@ -79,7 +80,7 @@ sub get_v1 { return; } my $token = $self->get_api_token($uid); my $token = $self->users->get_api_token( uid => $uid ); if ( not $api_token or not $token->{$api_action} or $api_token ne $token->{$api_action} ) Loading Loading @@ -145,7 +146,7 @@ sub travel_v1 { return; } my $token = $self->get_api_token($uid); my $token = $self->users->get_api_token( uid => $uid ); if ( not $token->{'travel'} or $api_token ne $token->{'travel'} ) { $self->render( json => { Loading Loading @@ -411,7 +412,7 @@ sub import_v1 { return; } my $token = $self->get_api_token($uid); my $token = $self->users->get_api_token($uid); if ( not $token->{'import'} or $api_token ne $token->{'import'} ) { $self->render( json => { Loading
lib/Travelynx/Model/Users.pm +18 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ my @sb_templates = ( [ 'bahn.expert/regional', 'https://bahn.expert/regional/{name}#{id}' ], ); my @token_types = (qw(status history travel import)); sub new { my ( $class, %opt ) = @_; Loading Loading @@ -86,6 +88,22 @@ sub verify_registration_token { return; } sub get_api_token { my ( $self, %opt ) = @_; my $db = $opt{db} // $self->{pg}->db; my $uid = $opt{uid}; my $token = {}; my $res = $db->select( 'tokens', [ 'type', 'token' ], { user_id => $uid } ); for my $entry ( $res->hashes->each ) { $token->{ $token_types[ $entry->{type} - 1 ] } = $entry->{token}; } return $token; } sub get_uid_by_name_and_mail { my ( $self, %opt ) = @_; my $db = $opt{db} // $self->{pg}->db; Loading