From 59c6a90e2f303f2b9bb9c6ac8973547106d4a17d Mon Sep 17 00:00:00 2001 From: betateilchen Date: Wed, 27 Jan 2021 14:24:22 +0000 Subject: [PATCH] 98_GoogleAuth.pm: cache credentials for allowed device in gAuth() git-svn-id: https://svn.fhem.de/fhem/trunk@23623 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_GoogleAuth.pm | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/98_GoogleAuth.pm b/fhem/FHEM/98_GoogleAuth.pm index 89748b23c..5f1ead0e6 100644 --- a/fhem/FHEM/98_GoogleAuth.pm +++ b/fhem/FHEM/98_GoogleAuth.pm @@ -213,7 +213,6 @@ sub Detail { return $ret; } - # helper functions sub _ga_make_url { my ($name) = @_; @@ -239,9 +238,23 @@ sub _ga_make_token_6 { package main; sub gAuth { - my($name,$token) = @_; + my($name,$token,$aDev) = @_; + return "missing name!" unless $name; + return "missing $token!" unless $token; + $aDev //= ''; my $myHash = $defs{$name}; - return FHEM::GoogleAuth::Get($myHash,$name,'check',$token); + if (exists $myHash->{helper}{$token} + && $myHash->{helper}{$token} - gettimeofday() > 0 + && defined($aDev) + && exists $defs{$aDev} + && $defs{$aDev}{TYPE} eq 'allowed') { + return 1; + } else { + delete $myHash->{helper}{$token} if defined($myHash->{helper}{$token}); + my $result = FHEM::GoogleAuth::Get($myHash,$name,'check',$token); + if ($result == 1) {$myHash->{helper}{$token} = gettimeofday()+DAYSECONDS}; + return $result; + } } 1;