anonymous@RULINUX.NET~# Last login: 2024-11-22 23:17:31
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Субж. Делаю привязку пользователей к OpenID.

Реализовано пока так

]
try
{
        $openid = new \LightOpenID($request->getHttpHost());
        if(!$openid->mode)
        {
                $identifier = $request->request->get('openid_identifier');
                if(isset($identifier))
                {
                        $openid->identity = $identifier;
                        $openid->required = array('contact/email');
                        $openid->optional = array('namePerson', 'namePerson/friendly');
                        return $this->redirect($openid->authUrl());
                }
                else
                        throw new \Exception('OpenID identifier is empty');
        }
        elseif($openid->mode == 'cancel')
        {
                return $this->redirect($this->generateUrl('login'));
        }
        else
        {
                $userRepository = $this->getDoctrine()->getRepository('RLSecurityBundle:User');
                if($openid->validate())
                {
                        $identity = $openid->identity;
                        $identity = preg_replace('#^http://(.*)#sim', '$1', $identity);
                        $identity = preg_replace('#^https://(.*)#sim', '$1', $identity);
                        $identity = preg_replace('#(.*)\/$#sim', '$1', $identity);
                        try
                        {
                                $user = $userRepository->findOneByOpenid($identity);
                        }
                        catch(ErrorException $e)
                        {
                                throw new \Exception($e->getMessage());
                        }
                        if(isset($user))
                        {
                                //FIXME: login user by openid
                                $legend = 'msg';
                                $text = 'login user';
                                $title='';
                                return $this->render('RLSecurityBundle:Default:fieldset.html.twig', array('legend'=>$legend, 'text'=>$text, 'title'=>$title));
                        }
                        else
                        {
                                $attr = $openid->getAttributes();
                                $email = '';
                                $newUser = new User;
                                $form = $this->createFormBuilder($newUser)
                                ->add('username', 'text', array('required' => true))
                                ->add('password', 'password', array('required' => true))
                                ->add('name', 'text', array('required' => false))
                                ->add('lastname', 'text', array('required' => false))
                                ->add('country', 'country', array('required' => true))
                                ->add('city', 'text', array('required' => false))
                                ->add('birthday', 'birthday', array('required' => true))
                                ->add('gender', 'checkbox', array('required' => false))
                                ->add('additional', 'textarea', array('required' => false))
                                ->add('email', 'email', array('required' => true))
                                ->add('im', 'email', array('required' => false))
                                ->add('openid', 'text', array('required' => false))
                                ->add('language', 'language', array('required' => true))
                                ->add('gmt', 'timezone', array('required' => true))
                                ->add('question', 'text', array('required' => true))
                                ->add('answer', 'text', array('required' => true))
                                ->getForm();
                                return $this->render('RLSecurityBundle:Security:openIDRegistration.html.twig',array('openid'=>$identity, 'password'=>'', 'email'=>$email, 'form'=>$form->createView()));
                        }
                }
                else
                        throw new \Exception('OpenID is invalid');
        }
}
catch(ErrorException $e)
{
        throw new \Exception($e->getMessage());
}
 

Так вот как мне авторизовать полученного из базы пользователя? В текущей реализации я просто вызываю функцию auth_user(). Тут-же как я понял симфония перехватывает данные передаваемые на login_check. А костылять отправкой POST запроса через libcurl или созданием формы с onLoad="submit()" тоже не хочется. Алсо если уж придется костылять, то может быть есть возможность редиректа с уже созданным объектом Request?

Tux-oid(*) (2012-05-16 22:10:57)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9

[Ответить на это сообщение]
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

У симфони этим занимается специальный сервис. И да там есть интерфейс и всё такое, которое если ты прально зареализуешь все завертиться на раз.

Ты опенИД всегда сможешь прикрутить позже, не парься сейчас этим, делай основное тело.

Ax-Xa-Xa(*)(2012-05-17 00:54:42)
Отредактировано Ax-Xa-Xa по причине "не указана"
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Да мне тут немного работенки привалило. Так-что хотелось-бы дописать работу с пользователями и отвлечься от движка примерно на недельку-полторы для зарабатывания денег.

Tux-oid(*)(2012-05-17 09:06:13)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Вобщем ладно. Оставлю на потом. А пока интегрирую ThemeBundle и MainBundle из репозитория Ax-xa-xa

Tux-oid(*)(2012-05-18 13:25:22)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

> А пока интегрирую ThemeBundle и MainBundle из репозитория Ax-xa-xa
Тогда обожди чуть, чуть. Уже почти готов более красивый и идеологически правильный вариант подключения темы и авторизации пользователя (в частности он будет поддерживать анонимуса так же как сейчас). Тебе останется прикрутить это дело к БД)))

Ax-Xa-Xa(*)(2012-05-18 14:57:36)
Отредактировано Ax-Xa-Xa по причине "не указана"
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Ну с темой подождем, а вот зачем дублировать модуль авторизации если я его уже запилил(кроме OpenID).

Tux-oid(*)(2012-05-18 15:00:18)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

> Ну с темой подождем, а вот зачем дублировать модуль авторизации если я его уже запилил
Анонимные настройки он у тебя держит? Ну в общем посмотришь если понравиться можно запилишь или смержим с существующим.

Ax-Xa-Xa(*)(2012-05-18 15:02:43)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.168 Safari/535.19
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Пока нет. Но их запилить дело 10 минут. Меня больше не анонимные настройки напрягают, а OpenID. Вернее привязка к текущему пользователю.

Tux-oid(*)(2012-05-18 15:04:52)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

> Меня больше не анонимные настройки напрягают, а OpenID. Вернее привязка к текущему пользователю.
Есть пару бандлов юзающих OpenID надо посмотреть как у них сделано.

Ax-Xa-Xa(*)(2012-05-18 15:08:54)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

> Пока нет. Но их запилить дело 10 минут.
Да, но я хочу сделать так что бы аноним был для системы почти таким же юзером с username и другим атрибутами.

Ax-Xa-Xa(*)(2012-05-18 15:10:36)
Отредактировано Ax-Xa-Xa по причине "не указана"
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Я смотрел. Там создается провайдер пользователя. И пользователи берутся напрямую по OpenID. Мне-же всего-лишь нужна дополнительная проверка поля openid в текущем. Алсо FpOpenIDBundle у меня так и не завелся, а KainHaart\OpenIDAuthBundle делает не то что мне нужно.

Tux-oid(*)(2012-05-18 15:12:44)
Отредактировано Tux-oid по причине "не указана"
Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Ну давай, если что я посмотрю и подгоню сущности и недостающие части тогда.

Tux-oid(*)(2012-05-18 15:14:35)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

> Там создается провайдер пользователя. И ползователи берутся напрямую по OpenID. Мне-же всего-лишь нужна дополнительная проверка поля openid в текущем.
Давай я посмотрю в выходные эти бэндлы, я всё равно хочу досканально разобраться с системой авторизации, со всеми этими провайдерами пользователей и проч. Потом обсудим еше.

Ax-Xa-Xa(*)(2012-05-18 15:17:54)

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5
avatar
Скрыть

Re:[symfony]Что-то я совсем запутался. Авторизация по OpenID.

Давай.

Tux-oid(*)(2012-05-18 15:21:14)

Mozilla/5.0 (X11; Linux i686; rv:12.0) Gecko/20120422 Firefox/12.0 SeaMonkey/2.9
Этот тред читают 2 пользователя:
Анонимных: 2
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!