X-Git-Url: https://git.cweiske.de/anoweco.git/blobdiff_plain/9865307b2a6a6d2fdb0b7a2fa07056de9372c106..e876f47024e8a73e901a6be3193c4f611ede9088:/www/auth.php diff --git a/www/auth.php b/www/auth.php index ef6d6cf..5e3ed23 100644 --- a/www/auth.php +++ b/www/auth.php @@ -8,7 +8,7 @@ namespace anoweco; header('HTTP/1.0 500 Internal Server Error'); require 'www-header.php'; -function getOrCreateUser($mode, $name, $email) +function getOrCreateUser($mode, $name, $imageurl, $email) { if ($mode == 'anonymous') { $name = 'Anonymous'; @@ -18,7 +18,9 @@ function getOrCreateUser($mode, $name, $email) $name = 'Anonymous'; } } - $imageurl = getImageUrl($email); + if ($imageurl == '') { + $imageurl = getImageUrl($email); + } $storage = new Storage(); $id = $storage->findUser($name, $imageurl); @@ -52,7 +54,28 @@ if ($_SERVER['REQUEST_METHOD'] == 'GET') { $response_type = getOptionalParameter($_GET, 'response_type', 'id'); $scope = getOptionalParameter($_GET, 'scope', null); - //FIXME: if $me is an actual user, load his data + $id = array( + 'mode' => 'anonymous', + 'name' => '', + 'imageurl' => '', + ); + $userbaseurl = Urls::full('/user/'); + if (substr($me, 0, strlen($userbaseurl)) == $userbaseurl) { + //actual user URL - loads his data + $userid = substr($me, strrpos($me, '/') + 1, -4); + if (intval($userid) == $userid) { + $storage = new Storage(); + $rowUser = $storage->getUser($userid); + if ($rowUser !== null) { + $id['mode'] = 'data'; + $id['name'] = $rowUser->user_name; + $id['imageurl'] = $rowUser->user_imageurl; + if ($id['imageurl'] == Urls::userImg()) { + $id['imageurl'] = ''; + } + } + } + } //let the user choose his identity header('HTTP/1.0 200 OK'); @@ -66,6 +89,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'GET') { 'response_type' => $response_type, 'scope' => $scope, ), + 'id' => $id, 'formaction' => '/auth.php?action=login', ) ); @@ -84,7 +108,8 @@ if ($_SERVER['REQUEST_METHOD'] == 'GET') { verifyParameter($id, 'mode'); $userId = getOrCreateUser( - $id['mode'], trim($id['name']), trim($id['email']) + $id['mode'], trim($id['name']), trim($id['imageurl']), + trim($id['email']) ); $me = Urls::full(Urls::user($userId)); @@ -101,9 +126,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'GET') { //redirect back to client $url = new \Net_URL2($redirect_uri); - if ($response_type == 'code') { - $url->setQueryVariable('code', $code); - } + $url->setQueryVariable('code', $code); $url->setQueryVariable('me', $me); $url->setQueryVariable('state', $state); header('Location: ' . $url->getURL());