diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-07-18 18:53:31 +0200 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-07-18 18:53:31 +0200 |
commit | ff12f010380914f9461966f2ef8ac6b303712ee4 (patch) | |
tree | dd3d9890320228e11b826c631671a67ad99c38b8 /lib/Travelynx/Controller/Account.pm | |
parent | 9bf27132cbf2f87bca5af564914d96a57045ecc1 (diff) |
Add language selection to account page
Diffstat (limited to 'lib/Travelynx/Controller/Account.pm')
-rw-r--r-- | lib/Travelynx/Controller/Account.pm | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/Travelynx/Controller/Account.pm b/lib/Travelynx/Controller/Account.pm index bf1eac2..8121f0a 100644 --- a/lib/Travelynx/Controller/Account.pm +++ b/lib/Travelynx/Controller/Account.pm @@ -874,6 +874,35 @@ sub webhook { $self->render( 'webhooks', hook => $hook ); } +sub change_language { + my ($self) = @_; + + my $action = $self->req->param('action'); + my $language = $self->req->param('language'); + + if ( $action and $action eq 'save' ) { + if ( $self->validation->csrf_protect->has_error('csrf_token') ) { + $self->render( + 'bad_request', + csrf => 1, + status => 400 + ); + return; + } + $self->users->set_language( + uid => $self->current_user->{id}, + language => $language, + ); + $self->flash( success => 'language' ); + $self->redirect_to('account'); + } + else { + my @languages = @{ $self->current_user->{languages} }; + $self->param( language => $languages[0] // q{} ); + $self->render('language'); + } +} + sub change_mail { my ($self) = @_; |