14 class EAuth extends CApplicationComponent {
19 public $services = array();
32 if (Yii::app()->hasComponent(
'cache'))
33 $services = Yii::app()->cache->get(
'EAuth.services');
34 if (!isset($services) || !is_array($services)) {
36 foreach ($this->services as $service => $options) {
37 if ((!isset($options[
'class']) || $options[
'class']==
'')) {
41 $services[$service] = (object) array(
42 'id' => $class->getServiceName(),
43 'title' => $class->getServiceTitle(),
44 'type' => $class->getServiceType(),
45 'jsArguments' => $class->getJsArguments(),
48 if (Yii::app()->hasComponent(
'cache'))
49 Yii::app()->cache->set(
'EAuth.services', $services);
60 $service = strtolower($service);
62 if (!isset($services[$service]))
63 throw new EAuthException(Yii::t(
'eauth',
'Undefined service name: {service}.', array(
'{service}' => $service)), 500);
64 return $services[$service];
74 return $service->type;
83 $service = strtolower($service);
84 if (!isset($this->services[$service]))
85 throw new EAuthException(Yii::t(
'eauth',
'Undefined service name: {service}.', array(
'{service}' => $service)), 500);
86 $service = $this->services[$service];
88 $class = $service[
'class'];
89 $point = strrpos($class,
'.');
93 $class = substr($class, $point + 1);
95 unset($service[
'class']);
96 $identity =
new $class();
97 $identity->init($this, $service);
108 public function redirect($url, $jsRedirect =
true) {
109 require_once dirname(__FILE__) . DIRECTORY_SEPARATOR .
'EAuthRedirectWidget.php';
110 $widget = Yii::app()->getWidgetFactory()->createWidget($this,
'EAuthRedirectWidget', array(
111 'url' => CHtml::normalizeUrl($url),
112 'redirect' => $jsRedirect,
124 require_once dirname(__FILE__) . DIRECTORY_SEPARATOR .
'EAuthWidget.php';
125 $widget = Yii::app()->getWidgetFactory()->createWidget($this,
'EAuthWidget', $properties);
136 return serialize($identity);
145 return unserialize($identity);