Unverified Commit 59e9a24a authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

move get_api_token to users model

parent af82c46d
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -169,11 +169,6 @@ sub startup {
			};
		}
	);
	$self->attr(
		token_types => sub {
			return [qw(status history travel import)];
		}
	);

	$self->attr(
		account_public_mask => sub {
@@ -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 ) = @_;
+9 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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');
}
@@ -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 {
+6 −5
Original line number Diff line number Diff line
@@ -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 {
@@ -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} )
@@ -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 => {
@@ -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 => {
+18 −0
Original line number Diff line number Diff line
@@ -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 ) = @_;

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