better error handling
darcs-hash:20080618071207-84dde-a7903c5a806e16a39101244ef721204a7ce2bd46.gz
This commit is contained in:
parent
7a17d1c477
commit
ec68ae3cb1
@ -33,7 +33,7 @@ class FinishaddopenidAction extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function try_login() {
|
function try_login() {
|
||||||
|
|
||||||
$consumer = oid_consumer();
|
$consumer = oid_consumer();
|
||||||
|
|
||||||
$response = $consumer->complete(common_local_url('finishaddopenid'));
|
$response = $consumer->complete(common_local_url('finishaddopenid'));
|
||||||
@ -59,15 +59,22 @@ class FinishaddopenidAction extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$user = $this->get_user($canonical);
|
$user = $this->get_user($canonical);
|
||||||
|
|
||||||
if ($user) {
|
if ($user) {
|
||||||
$this->message(_t('This OpenID is already associated with user "') . $user->nickname . _t('"'));
|
$this->message(_t('This OpenID is already associated with user "') . $user->nickname . _t('"'));
|
||||||
} else {
|
} else {
|
||||||
$user = common_current_user();
|
$user = common_current_user();
|
||||||
$this->connect_user($user, $display, $canonical);
|
if (!$this->connect_user($user, $display, $canonical)) {
|
||||||
if ($sreg) {
|
$this->message(_t('Error connecting user'));
|
||||||
$this->update_user($user, $sreg);
|
return;
|
||||||
}
|
}
|
||||||
|
if ($sreg) {
|
||||||
|
if (!$this->update_user($user, $sreg)) {
|
||||||
|
$this->message(_t('Error updating profile'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# success!
|
||||||
common_redirect(common_local_url('openidsettings'));
|
common_redirect(common_local_url('openidsettings'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -78,7 +85,7 @@ class FinishaddopenidAction extends Action {
|
|||||||
common_element('p', NULL, $msg);
|
common_element('p', NULL, $msg);
|
||||||
common_show_footer();
|
common_show_footer();
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_user($canonical) {
|
function get_user($canonical) {
|
||||||
$user = NULL;
|
$user = NULL;
|
||||||
$oid = User_openid::staticGet('canonical', $canonical);
|
$oid = User_openid::staticGet('canonical', $canonical);
|
||||||
@ -89,15 +96,15 @@ class FinishaddopenidAction extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function update_user($user, $sreg) {
|
function update_user($user, $sreg) {
|
||||||
|
|
||||||
$profile = $user->getProfile();
|
$profile = $user->getProfile();
|
||||||
|
|
||||||
$orig_profile = clone($profile);
|
$orig_profile = clone($profile);
|
||||||
|
|
||||||
if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) {
|
if ($sreg['fullname'] && strlen($sreg['fullname']) <= 255) {
|
||||||
$profile->fullname = $sreg['fullname'];
|
$profile->fullname = $sreg['fullname'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($sreg['country']) {
|
if ($sreg['country']) {
|
||||||
if ($sreg['postcode']) {
|
if ($sreg['postcode']) {
|
||||||
# XXX: use postcode to get city and region
|
# XXX: use postcode to get city and region
|
||||||
@ -110,35 +117,36 @@ class FinishaddopenidAction extends Action {
|
|||||||
|
|
||||||
# XXX save language if it's passed
|
# XXX save language if it's passed
|
||||||
# XXX save timezone if it's passed
|
# XXX save timezone if it's passed
|
||||||
|
|
||||||
if (!$profile->update($orig_profile)) {
|
if (!$profile->update($orig_profile)) {
|
||||||
common_server_error(_t('Error saving the profile.'));
|
common_server_error(_t('Error saving the profile.'));
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$orig_user = clone($user);
|
$orig_user = clone($user);
|
||||||
|
|
||||||
if ($sreg['email'] && Validate::email($sreg['email'], true)) {
|
if ($sreg['email'] && Validate::email($sreg['email'], true)) {
|
||||||
$user->email = $sreg['email'];
|
$user->email = $sreg['email'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->update($orig_user)) {
|
if (!$user->update($orig_user)) {
|
||||||
common_server_error(_t('Error saving the user.'));
|
common_server_error(_t('Error saving the user.'));
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function connect_user($user, $display, $canonical) {
|
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function connect_user($user, $display, $canonical) {
|
||||||
|
|
||||||
$oid = new User_openid();
|
$oid = new User_openid();
|
||||||
$oid->display = $display;
|
$oid->display = $display;
|
||||||
$oid->canonical = $canonical;
|
$oid->canonical = $canonical;
|
||||||
$oid->user_id = $user->id;
|
$oid->user_id = $user->id;
|
||||||
$oid->created = DB_DataObject_Cast::dateTime();
|
$oid->created = DB_DataObject_Cast::dateTime();
|
||||||
|
|
||||||
if (!$oid->insert()) {
|
if (!$oid->insert()) {
|
||||||
common_server_error(_t('Error connecting OpenID.'));
|
return false;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user