Skip to content
Snippets Groups Projects
Verified Commit 72d5df14 authored by Andrej Ramašeuski's avatar Andrej Ramašeuski
Browse files

Opravy API, podpora Chobotnice

parent 32e35dd2
Branches
No related tags found
No related merge requests found
Pipeline #16583 passed
kind: pipeline
name: default
steps:
- name: docker
image: plugins/docker
settings:
username: test
password: test
repo: andrej/test
password:
from_secret: password
username:
from_secret: username
tags:
- latest
2.7.0 2.8.0
...@@ -30,6 +30,7 @@ sub startup { ...@@ -30,6 +30,7 @@ sub startup {
$self->plugin("ForwardedFor"); $self->plugin("ForwardedFor");
$self->plugin('PZ::Helpers::Core'); $self->plugin('PZ::Helpers::Core');
$self->plugin('PZ::Helpers::OIDC'); $self->plugin('PZ::Helpers::OIDC');
$self->plugin('PZ::Helpers::Octopus');
my $redis = Mojo::Redis->new( 'redis://' . $cfg->{redis}{server} ); my $redis = Mojo::Redis->new( 'redis://' . $cfg->{redis}{server} );
$self->helper( redis => sub { return $redis; } ); $self->helper( redis => sub { return $redis; } );
...@@ -80,6 +81,9 @@ sub startup { ...@@ -80,6 +81,9 @@ sub startup {
return $c->$cb('Authorization header not present') if ! $token; return $c->$cb('Authorization header not present') if ! $token;
$token = $c->octopus_auth($token) if length($token) > 32;
return $c->$cb('Invalid token') if ! $token;
my $user = $c->schema->resultset('User')->find( my $user = $c->schema->resultset('User')->find(
{ token => $token } { token => $token }
); );
......
...@@ -61,7 +61,9 @@ sub create ($c) { ...@@ -61,7 +61,9 @@ sub create ($c) {
$title = $ua->get($url)->result->dom->at('title')->text; $title = $ua->get($url)->result->dom->at('title')->text;
}; };
my $shortcut = $c->current_user->add_to_shortcuts({ my $user = $c->stash->{user} // $c->current_user;
my $shortcut = $user->add_to_shortcuts({
url => $url, url => $url,
title => $title, title => $title,
shortcut => ($custom || $c->schema->resultset('Shortcut')->generate()) shortcut => ($custom || $c->schema->resultset('Shortcut')->generate())
...@@ -98,8 +100,10 @@ sub delete ($c) { ...@@ -98,8 +100,10 @@ sub delete ($c) {
sub list ($c) { sub list ($c) {
my @shortcuts = (); my @shortcuts = ();
my $user = $c->stash->{user} // $c->current_user;
SHORTCUT: SHORTCUT:
foreach my $shortcut ( $c->current_user->shortcuts( foreach my $shortcut ( $user->shortcuts(
{ deleted => undef }, { deleted => undef },
{ order_by => {-desc => 'created'} }, { order_by => {-desc => 'created'} },
) ) { ) ) {
......
package PZ::Helpers::Octopus;
use strict;
use warnings;
use base 'Mojolicious::Plugin';
use Mojo::JWT;
sub register {
my ($class, $self) = @_;
$self->helper( octopus_auth => sub {
my $c = shift;
my $token = shift // return undef;
my $claims;
eval {
$claims = Mojo::JWT->new(
secret => $self->cfg->{octopus}{secret}
)->decode($token);
};
if ( $@ ) {
$c->app->log->warn( $@ );
return undef;
}
my $user = $c->schema->resultset('User')->update_or_create(
uuid => $claims->{uuid},
{ key => 'uuid', }
);
$user->set_token;
return $user->token;
});
}
1;
__END__
...@@ -34,4 +34,7 @@ ...@@ -34,4 +34,7 @@
piratar => 'https://a.pirati.cz/piratar/100/', piratar => 'https://a.pirati.cz/piratar/100/',
domain => $ENV{DOMAIN}, domain => $ENV{DOMAIN},
dev_mode => ( $ENV{MOJO_MODE} eq 'development'), dev_mode => ( $ENV{MOJO_MODE} eq 'development'),
octopus => {
secret => $ENV{OCTOPUS_SECRET},
},
}; };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment