From 59d86a4497243dd290ef731341aaa9110553dbbd Mon Sep 17 00:00:00 2001 From: Calin Burloiu Date: Fri, 14 Oct 2011 17:00:11 +0300 Subject: [PATCH] still working at OpenID --- application/config/openid.php | 2 +- application/controllers/user.php | 2 ++ application/libraries/Openid.php | 9 ++++-- application/models/users_model.php | 35 ++++++++++++++++++------ data/user_pictures/admin-.jpg | Bin 0 -> 36927 bytes data/user_pictures/admin-.jpg-thumb.jpg | Bin 0 -> 2247 bytes 6 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 data/user_pictures/admin-.jpg create mode 100644 data/user_pictures/admin-.jpg-thumb.jpg diff --git a/application/config/openid.php b/application/config/openid.php index 2dc2630..176a648 100644 --- a/application/config/openid.php +++ b/application/config/openid.php @@ -2,7 +2,7 @@ $config['openid_storepath'] = './tmp'; $config['openid_required'] = array('nickname'); -$config['openid_optional'] = array('fullname', 'email'); +$config['openid_optional'] = array('fullname', 'email', 'dob', 'country'); $config['openid_pape_policies'] = array(); // OBSOLETE diff --git a/application/controllers/user.php b/application/controllers/user.php index 5a9b779..2e4b4ee 100644 --- a/application/controllers/user.php +++ b/application/controllers/user.php @@ -157,6 +157,8 @@ class User extends CI_Controller { //echo 'nickname('. $sreg_resp->get('nickname'). ')'; echo var_dump($obj->data); + echo '
'; + echo var_dump($sreg); // foreach ($sreg as $key => $value) // { // $data['success'] .= $this->_set_message('openid_content', array($key, $value), array('%s', '%t')); diff --git a/application/libraries/Openid.php b/application/libraries/Openid.php index 0ac29e4..7fd12fd 100644 --- a/application/libraries/Openid.php +++ b/application/libraries/Openid.php @@ -122,9 +122,12 @@ class Openid { // Create attribute request object // See http://code.google.com/apis/accounts/docs/OpenID.html#Parameters for parameters // Usage: make($type_uri, $count=1, $required=false, $alias=null) - $attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/contact/email',2,1, 'email'); - $attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/first',1,1, 'firstname'); - $attribute[] = Auth_OpenID_AX_AttrInfo::make('http://axschema.org/namePerson/last',1,1, 'lastname'); + $attribute[] = Auth_OpenID_AX_AttrInfo::make( + 'http://axschema.org/contact/email', 1, TRUE); + $attribute[] = Auth_OpenID_AX_AttrInfo::make( + 'http://axschema.org/namePerson/first', 1, TRUE); + $attribute[] = Auth_OpenID_AX_AttrInfo::make( + 'http://axschema.org/namePerson/last', 1, TRUE); // Create AX fetch request $ax = new Auth_OpenID_AX_FetchRequest; diff --git a/application/models/users_model.php b/application/models/users_model.php index 76f378d..02a520f 100644 --- a/application/models/users_model.php +++ b/application/models/users_model.php @@ -78,6 +78,10 @@ class Users_model extends CI_Model { && ! $this->ldap_login($username, $password)) return FALSE; + if (empty($user['email']) || empty($user['first_name']) + || empty($user['last_name'])) + $user['import'] = TRUE; + // Update last login time. $this->db->query("UPDATE `users` SET last_login = UTC_TIMESTAMP() @@ -201,6 +205,9 @@ class Users_model extends CI_Model { $data['password'] = sha1($data['password']); // TODO picture data: save, convert, make it thumbnail + if (empty($data['birth_date'])) + $data['birth_date'] = NULL; + $cols = ''; $vals = ''; foreach ($data as $col=> $val) @@ -229,13 +236,16 @@ class Users_model extends CI_Model { // If registered with internal authentication it needs to activate // the account. - $activation_code = Users_model::gen_activation_code($data['username']); - $user_id = $this->get_user_id($data['username']); - $query = $this->db->query("INSERT INTO `users_unactivated` - (user_id, activation_code) - VALUES ($user_id, '$activation_code')"); - $this->send_activation_email($user_id, $data['email'], - $activation_code, $data['username']); + if ($data['auth_src'] == 'internal') + { + $activation_code = Users_model::gen_activation_code($data['username']); + $user_id = $this->get_user_id($data['username']); + $query = $this->db->query("INSERT INTO `users_unactivated` + (user_id, activation_code) + VALUES ($user_id, '$activation_code')"); + $this->send_activation_email($user_id, $data['email'], + $activation_code, $data['username']); + } // TODO exception on failure return $query; @@ -395,15 +405,22 @@ class Users_model extends CI_Model { $data['password'] = sha1($data['password']); // TODO picture data: save, convert, make it thumbnail + if (empty($data['birth_date'])) + $data['birth_date'] = NULL; + $set = ''; foreach ($data as $col => $val) { + if ($val === NULL) + { + $set .= "$col = NULL, "; + continue; + } + if (is_int($val)) $set .= "$col = $val, "; else if (is_string($val)) $set .= "$col = '$val', "; - else if (is_null($var)) - $set .= "$col = NULL, "; } $set = substr($set, 0, -2); diff --git a/data/user_pictures/admin-.jpg b/data/user_pictures/admin-.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a33a4daac8c5fc8610ffa995df01c0c99721eb83 GIT binary patch literal 36927 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%0DITyg|~mn&3k=Qvj3Gh0+NOXrxPFskP2j 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 literal 0 HcmV?d00001 diff --git a/data/user_pictures/admin-.jpg-thumb.jpg b/data/user_pictures/admin-.jpg-thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95820d983c2d8fbda5f09ed30eb3cc06312765de GIT binary patch literal 2247 zcmbW!c{tSj9tZH>m|^T0W0JCrZOVGAgY0DNgJDc#=_XtDoy5tOPRTA=at0X*A!UhM zov}2Cp@hbiK^R43C&JY^_qq3Z?qB!b_viV3|M`BN&+~ab-$VN06d+)QvBUr%5CDLV z3OGCfbWL$)#!hy)vq)brCI3)wUu3kZvI_D{RD@r!FVfP=9BE~5W{!+TtH~)M!=gL_ z{UT$L`be}2_u&V?6yW3H=Hce#Yg7DL#;=)K}IaL*9IVDB)vsMP` zXpEMkk`cieV}r#x;?xXWJY4KAS~=kCehvZg^Yg=Da1;W8veQ)3wELfPNC9A+fD2#^ z21x;IFc269I_w4{j*#r2KLh+TAT}_Bode2wwDeI!vjD&b0)yEgV0Ly0 za^-`nht)Mto;EeNv_5NV@9gS+MeXVBdp-PaWOVF3eVj4FUP>(RUlv)y}kV#H? zV+WVCI&KAVDf}(>aT$$i+0~!4KV|F`7_X5%9RlwD$gk2iGG@y5@a^b{jo@pFq;eH)?V`q*-N$zwKB4!pMQ}vW*pu%GDg1{(+URNxIY!*Y_%GS6s8@MdJ2o_>wtj~i*n)CJX0hD|jj^E=g& zo#2@t+DH5FqmR2nMx5bM@DbLTS7bUyEgLx$@6@U51#*^5TEf+UN=ws+3vl6LzqQDV zl6R9*9ug-f`0|YTI{CwdtVMp@_GydT*I6QYH|0#_B>J|t*}yZWHuM+YHf3-y&g56} z6CNwaZr3nn9zP**G~+t%cw3{FGU&;%68(%9sD^U1c`gmn=c8zpeFg)v$49NWyh`=#R_#WoYz`S_$Zk^jxKaz^gGJ2k4Y?y(EXJI215@Gl zjo$O3%hLKQ+7ecRLKEZa?zAo4%hK0fHS##pk;tjgW7T^T0S~gM!r8X*Ywi63ft?!W zB1}5fpakxAxBu11SLU99r}jniTA2iP)OpNUhTf)~s8ejW_2Q4J8JoeLhs1yu;V@UF zjy>6rGvPh`a$;F60r;N6vg zFtd_LU-Gcp-ttpwq_XrBhYIj;C0lNF*t7HH=v$T8>Di}F7b6P$+z!BLWiJt#TIw#$ zQa!Y%ABOFKNDH}Ce1&!6O&js|kSTYJPVqv(2kW9(X+hDvWT;F+2|mMcdNI9)e6DCd zP#M_0hPdq3z9RaLS{o+PThQ>rXZTku%Y02G*hb6kexlx^6?CZTH|OUWxW6$^#U;Cz zeAUzwm&_66$cx5uQvHX1$b?n(hxiHKHCUcb_Uk!^FY0RVke%c~<;Nf6={4Oad?#4x zv0BsJ47Pg)EEb7l6ubMb*4pbbL?hlG+3E`c&NKVOit-W>d?HT=TlS!1GS?3|cwyTn z`PyWvSw=ACeXgn`?1_GW%pw6d=#e>^o%Jcd<>59h;1K8!dHpyZTN8C#z^DuK%(H=J zE2%~Q(3~}tDsEYrs}>#kP&3Mvc>jh}j1X^k$>wLnU*-uKWqbohiI}S=%O6G5T9fD! sl{gE6w^OXtrNwpek`WTVHbTcYd;ilh7mqLa^L#yNw9ho>p2P8f09@?`XaE2J literal 0 HcmV?d00001 -- 2.20.1