<ul>
<li>
<label>
- <input type="radio" name="id[mode]" value="anonymous" checked="checked"/>
+ <input type="radio" name="id[mode]" value="anonymous"
+ {%if id.mode=="anonymous"%}checked="checked"{%endif%}/>
Anonymous
</label>
</li>
<li>
<label>
- <input type="radio" name="id[mode]" value="data"/> With a name
+ <input type="radio" name="id[mode]" value="data"
+ {%if id.mode=="data"%}checked="checked"{%endif%}/>
+ With a name
</label>
<ul>
<li>
<label for="id-name">Name:</label>
- <input type="text" name="id[name]" id="id-name"/>
+ <input type="text" name="id[name]" id="id-name" value="{{id.name}}"/>
</li>
<li>
- <label for="id-email">E-Mail:</label>
+ {% if id.imageurl %}
+ <img src="{{id.imageurl}}" width="32" height="32" alt="Avatar image"/>
+ {% endif %}
+ <label for="id-imageurl">Avatar image URL:</label>
+ <input type="url" name="id[imageurl]" id="id-imageurl"
+ value="{{id.imageurl}}" size="60"/>
+ <br/>
+ alternatively, provide an email so we can autodetect its avatar:
<input type="email" name="id[email]" id="id-email"/>
- (used to fetch avatar image. not stored.)
+ (will not be stored.)
</li>
</ul>
<p>
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';
$name = 'Anonymous';
}
}
- $imageurl = getImageUrl($email);
+ if ($imageurl == '') {
+ $imageurl = getImageUrl($email);
+ }
$storage = new Storage();
$id = $storage->findUser($name, $imageurl);
$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');
'response_type' => $response_type,
'scope' => $scope,
),
+ 'id' => $id,
'formaction' => '/auth.php?action=login',
)
);
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));