diff options
Diffstat (limited to 'mod/openid_client/actions/openid_client/login.php')
-rw-r--r-- | mod/openid_client/actions/openid_client/login.php | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/mod/openid_client/actions/openid_client/login.php b/mod/openid_client/actions/openid_client/login.php new file mode 100644 index 000000000..2a6896a61 --- /dev/null +++ b/mod/openid_client/actions/openid_client/login.php @@ -0,0 +1,32 @@ +<?php +/** + * OpenID client login action + */ + +elgg_load_library('openid_consumer'); + +$provider = get_input('openid_provider'); +$persistent = get_input('persistent', false); + +if ($provider == 'others') { + $provider = get_input('openid_url'); +} + +$consumer = new ElggOpenIDConsumer($store); +$consumer->setURL($provider); +$consumer->setReturnURL(elgg_get_site_url() . "mod/openid_client/return.php?persistent=$persistent"); + +$html = $consumer->requestAuthentication(); +if ($html) { + echo $html; + exit; +} else { + $flipped_providers = array_flip(elgg_get_config('openid_providers')); + if (isset($flipped_providers[$provider])) { + $provider_name = $flipped_providers[$provider]; + } else { + $provider_name = $provider; + } + register_error(elgg_echo('openid_client:error:no_html', array($provider_name))); + forward(); +} |