Changeset 8704


Ignore:
Timestamp:
12/12/12 15:23:43 (6 years ago)
Author:
mnagni
Message:

Encodes base64 the GET's parameters

Location:
mauRepo/dj_security/tags/v_0_0_7
Files:
1 added
2 edited
19 copied

Legend:

Unmodified
Added
Removed
  • mauRepo/dj_security/tags/v_0_0_7/dj_security

    • Property svn:ignore
      •  

        old new  
        22 
        33dev_settings.py 
         4 
         5dev_manage.py 
  • mauRepo/dj_security/tags/v_0_0_7/dj_security/encoder.py

    r8680 r8704  
    3535from json.encoder import JSONEncoder 
    3636from decimal import Decimal 
    37 from django.contrib.auth.models import User 
    3837from django.conf import settings 
    3938 
     
    4746        mydict = {} 
    4847         
    49         if isinstance(obj, User): 
    50             mydict.update({'permissions': ','.join(obj.get_all_permissions())}) 
     48        #if isinstance(obj, User): 
     49        #    mydict.update({'permissions': ','.join(obj.get_all_permissions())}) 
    5150         
    5251        if isinstance(obj, datetime.datetime): 
  • mauRepo/dj_security/tags/v_0_0_7/dj_security/middleware.py

    r8691 r8704  
    3333from paste.auth.auth_tkt import AuthTicket 
    3434from django.conf import settings 
     35from django.db.utils import DatabaseError 
     36from dj_security.exception import DSJOpenIDNotFoundError 
     37from dj_security.encoder import SecurityEncoder 
     38from django.shortcuts import render_to_response, redirect 
     39 
     40from userdb_model.models import User 
     41 
    3542import socket 
    36 import urlparse  
    37  
     43import urlparse 
     44import base64 
    3845import logging 
    3946 
     
    4148LOGGER = logging.getLogger(__name__) 
    4249 
    43 class DJ_Security_Middleware(object): 
     50class DJS_Middleware(object): 
    4451    """ 
    4552        Validates if the actual user is authenticated agains a  
     
    4956        or not of a valid paste cookie in the request. 
    5057    """             
     58     
     59    def process_request(self, request): 
     60        pass 
     61     
    5162    def process_response(self, request, response): 
    52         # 'auth_user' is set by the dj_security_login  
    53         # module after a succesfull authentication 
    54         if not request.POST.get('username', None) \ 
    55                 or not getattr(request, 'auth_user', False): 
     63        session = getattr(request, 'session', None) 
     64         
     65        if not session:         
    5666            return response 
    57                  
    58         remote_ip = _calculate_remote_ip(request.GET.get('r')) 
    59         LOGGER.debug("responding to remote_ip: %s" % (remote_ip))       
    60         username = request.POST.get('username') 
     67         
     68        if request.GET.get('r') and getattr(request, 'session', None): 
     69            request.session['r'] = request.GET.get('r') 
     70 
     71        if '/complete/' not in request.path: 
     72            request.session['done'] = False 
     73            return response 
     74 
     75        if request.path == '/account/signin/complete/' and not request.session.get('done', False): 
     76            return _encode_authenticated_response(request) 
     77 
     78        if request.path == '/account/signin/complete/' and request.session.get('done', False): 
     79            return response 
     80         
     81        remote_ip = _calculate_remote_ip(base64.b64decode(request.session.get('r'))) 
     82        LOGGER.debug("responding to remote_ip: %s" % (remote_ip))  
     83        username = session.get('openid').openid 
     84        user = get_user_byopenid(username) 
     85         
    6186        token = AuthTicket( 
    6287                    getattr(settings, 'SHARED_SECRET', 'sharedsecret'),  
    6388                    username,  
    6489                    remote_ip,  
    65                     user_data = getattr(request, 'auth_user', ''))                 
     90                    user_data = '{"userkey": "%s"}' % (user.userkey))                
    6691        LOGGER.debug("Created authTicket for %s from %s" % (username, remote_ip)) 
    6792        response.set_cookie('auth_tkt',  
     
    7095        LOGGER.debug("Set authTicket in response for %s from %s" % (username, remote_ip)) 
    7196        return response 
     97         
    7298     
    7399def _calculate_remote_ip(url_path):    
     
    89115    LOGGER.debug("%s has remote_ip %s" % (url_path, addrinfo[0][-1][0]))                                  
    90116    return addrinfo[0][-1][0] 
     117 
     118def get_user_byopenid(openid): 
     119    """ 
     120        Returns a tbusers row specified by `openid` 
     121    - String **userkey** 
     122        a user 
     123    """ 
     124    try: 
     125        return User.objects.get(openid=openid) 
     126    except DatabaseError as ex: 
     127        logging.error("Openid: %s - Not Found" % openid) 
     128        raise DSJOpenIDNotFoundError(ex)   
     129 
     130def _encode_authenticated_response(request, context = {}): 
     131    request.session['done'] = True 
     132    redirect_parameter = getattr(settings, 'REDIRECT_URL', 'r')     
     133    context['redirect_url'] = base64.b64decode(request.session.get(redirect_parameter, '')) 
     134    return render_to_response('logged_in.html', context) 
  • mauRepo/dj_security/tags/v_0_0_7/dj_security/settings.py

    r8699 r8704  
    4848""" 
    4949 
    50 OPENID_SREG = { 
    51     "required": ["country", "nickname", "email"], 
    52     "optional": "fullname" 
    53 }  
     50OPENID_AX = [ 
     51    'http://axschema.org/contact/email' 
     52]  
    5453 
    5554 
  • mauRepo/dj_security/tags/v_0_0_7/dj_security/urls.py

    r8699 r8704  
    2323#    (r'^login$', 'login'), 
    2424#) 
     25 
    2526urlpatterns += patterns('dj_security.views.my_profile', 
    26     (r'^account/signin/$', 'frontpage'), 
     27    (r'^account/register/$', 'frontpage'), 
    2728) 
     29#urlpatterns += patterns('dj_security.views.my_profile', 
     30#    (r'^account/signin/$', 'frontpage'), 
     31#) 
    2832print urlpatterns 
  • mauRepo/dj_security/tags/v_0_0_7/setup.py

    r8679 r8704  
    2929                        'django-authopenid==1.0.1', 
    3030                        'django-registration==0.8', 
    31                         'python-openid==2.2.5'], 
     31                        'python-openid==2.2.5', 
     32                        'userdb_model'], 
    3233) 
Note: See TracChangeset for help on using the changeset viewer.