コード例 #1
0
def professorRecoverPasswd(request, username, oneTimePasswd):

    infoForm = [
        (
            'Usuari',
            username,
        ),
    ]
    if request.method == 'POST':
        form = recuperacioDePasswdForm(request.POST)
        del form.fields['data_neixement']
        errors = []
        if form.is_valid():
            passwd = form.cleaned_data['p1']

            professor = Professor.objects.get(username=username)
            a_temps = datetime.now() - timedelta(minutes=30)
            codiOK = OneTimePasswd.objects.filter(
                usuari=professor.getUser(),
                clau=oneTimePasswd,
                moment_expedicio__gte=a_temps,
                reintents__lt=3)

            if not codiOK:
                errors.append(
                    u"Dades incorrectes. Demaneu un altre codi de recuperació."
                )
                #todoBloquejar oneTimePasswd
            elif codiOK:
                professor.set_password(passwd)
                professor.is_active = True
                professor.save()
                user = authenticate(username=professor.username,
                                    password=passwd)
                login(request, user)

            if not errors:
                codiOK.update(reintents=3)
                url_next = '/'
                return HttpResponseRedirect(url_next)
            else:
                form._errors.setdefault(NON_FIELD_ERRORS, []).extend(errors)

    else:
        form = recuperacioDePasswdForm()
        del form.fields['data_neixement']

    return render_to_response('form.html', {
        'form': form,
        'infoForm': infoForm,
        'head': u'Recuperació de Contrasenya'
    },
                              context_instance=RequestContext(request))
コード例 #2
0
ファイル: views.py プロジェクト: ctrl-alt-d/django-aula
def professorRecoverPasswd( request , username, oneTimePasswd ):     
    
    infoForm = [ ('Usuari',username,),]
    if request.method == 'POST':
        form = recuperacioDePasswdForm(  request.POST  )
        del form.fields['data_neixement']
        errors = []
        if form.is_valid(  ):         
            passwd = form.cleaned_data['p1']                           

            professor =  Professor.objects.get( username = username)            
            a_temps = datetime.now() - timedelta( minutes = 30 )
            codiOK = OneTimePasswd.objects.filter( usuari = professor.getUser(), 
                                                              clau = oneTimePasswd, 
                                                              moment_expedicio__gte = a_temps,
                                                              reintents__lt = 3 )

            if not codiOK:
                errors.append( u"Dades incorrectes. Demaneu un altre codi de recuperació.")                
                #todoBloquejar oneTimePasswd
            elif codiOK:                
                professor.set_password( passwd )
                professor.is_active = True
                professor.save()
                user = authenticate(username=professor.username, password=passwd)
                login( request, user )

            if not errors:
                codiOK.update( reintents = 3 )
                url_next = '/' 
                return HttpResponseRedirect( url_next )        
            else:
                form._errors.setdefault(NON_FIELD_ERRORS, []).extend(  errors  )    

    else:
        form = recuperacioDePasswdForm(   )
        del form.fields['data_neixement']
        
    return render(
                request,
                'form.html',
                    {'form': form,
                     'infoForm':infoForm,
                     'head': u'Recuperació de Contrasenya' 
                     }
                )
コード例 #3
0
ファイル: views.py プロジェクト: quimsau/django-aula
def alumneRecoverPasswd(request, username, oneTimePasswd):

    client_address = getClientAdress(request)

    infoForm = [
        (
            'Usuari',
            username,
        ),
    ]
    if request.method == 'POST':
        form = recuperacioDePasswdForm(request.POST)
        errors = []
        if form.is_valid():
            passwd = form.cleaned_data['p1']
            data_neixement = form.cleaned_data['data_neixement']

            alumneOK = True
            try:
                alumneUser = AlumneUser.objects.get(username=username)
                dataOK = data_neixement == alumneUser.getAlumne(
                ).data_neixement
                a_temps = datetime.now() - timedelta(minutes=30)
                codiOK = OneTimePasswd.objects.filter(
                    usuari=alumneUser.getUser(),
                    clau=oneTimePasswd,
                    moment_expedicio__gte=a_temps,
                    reintents__lt=3)
            except AlumneUser.DoesNotExist:
                alumneOK = False
            if not alumneOK:
                errors.append(
                    u'Dades incorrectes. Demaneu un altre codi de recuperació. Si el problema persisteix parleu amb el tutor.'
                )
            elif codiOK and not dataOK:
                errors.append(u'La data proporcionada no és correcta.')
                codiOK[0].reintents += 1
                codiOK[0].save()
            elif dataOK and not codiOK:
                errors.append(
                    u"L'enllaç que esteu utilitzant està caducat o no és correcta. Demaneu un altre codi de recuperació."
                )
            elif not dataOK and not codiOK:
                errors.append(
                    u"Dades incorrectes. Demaneu un altre codi de recuperació."
                )
                #todoBloquejar oneTimePasswd
            elif alumneUser.alumne.esBaixa():
                errors.append(
                    u'Cal parlar amb el tutor per recuperar accés a aquest compte.'
                )
            elif codiOK and dataOK and not alumneUser.alumne.esBaixa():
                alumneUser.set_password(passwd)
                alumneUser.is_active = True
                alumneUser.save()
                if alumneUser.alumne.motiu_bloqueig:
                    alumneUser.alumne.motiu_bloqueig = u""
                    alumneUser.alumne.save()
                user = authenticate(username=alumneUser.username,
                                    password=passwd)
                login(request, user)

            if not errors:
                codiOK.update(reintents=3)

                #apunto el login:
                LoginUsuari.objects.create(usuari=user,
                                           exitos=True,
                                           ip=client_address)

                url_next = '/'
                return HttpResponseRedirect(url_next)
            else:
                try:
                    #apunto el login:
                    LoginUsuari.objects.create(usuari=alumneUser,
                                               exitos=False,
                                               ip=client_address)
                except:
                    pass
                form._errors.setdefault(NON_FIELD_ERRORS, []).extend(errors)

    else:
        form = recuperacioDePasswdForm()

    return render(request, 'form.html', {
        'form': form,
        'infoForm': infoForm,
        'head': u'Recuperació de Contrasenya'
    })
コード例 #4
0
ファイル: views.py プロジェクト: ctrl-alt-d/django-aula
def alumneRecoverPasswd( request , username, oneTimePasswd ):     
    
    client_address = getClientAdress( request )

    infoForm = [ ('Usuari',username,),]
    if request.method == 'POST':
        form = recuperacioDePasswdForm(  request.POST  )
        errors = []
        if form.is_valid(  ):         
            passwd = form.cleaned_data['p1']               
            data_neixement = form.cleaned_data['data_neixement']
            
            alumneOK = True
            try:
                alumneUser =  AlumneUser.objects.get( username = username)
                dataOK = data_neixement == alumneUser.getAlumne().data_neixement
                a_temps = datetime.now() - timedelta( minutes = 30 )
                codiOK = OneTimePasswd.objects.filter( usuari = alumneUser.getUser(), 
                                                                  clau = oneTimePasswd, 
                                                                  moment_expedicio__gte = a_temps,
                                                                  reintents__lt = 3 )
            except AlumneUser.DoesNotExist:
                alumneOK = False
            if not alumneOK:
                errors.append( u'Dades incorrectes. Demaneu un altre codi de recuperació. Si el problema persisteix parleu amb el tutor.')
            elif codiOK and not dataOK:
                errors.append( u'La data proporcionada no és correcta.')
                codiOK[0].reintents += 1
                codiOK[0].save()
            elif dataOK and not codiOK:
                errors.append( u"L'enllaç que esteu utilitzant està caducat o no és correcta. Demaneu un altre codi de recuperació.")
            elif not dataOK and not codiOK:
                errors.append( u"Dades incorrectes. Demaneu un altre codi de recuperació.")                
                #todoBloquejar oneTimePasswd
            elif alumneUser.alumne.esBaixa():
                errors.append( u'Cal parlar amb el tutor per recuperar accés a aquest compte.')
            elif codiOK and dataOK and not alumneUser.alumne.esBaixa():                
                alumneUser.set_password( passwd )
                alumneUser.is_active = True
                alumneUser.save()
                if alumneUser.alumne.motiu_bloqueig:
                    alumneUser.alumne.motiu_bloqueig = u""
                    alumneUser.alumne.save()
                user = authenticate(username=alumneUser.username, password=passwd)
                login( request, user )
 

            if not errors:
                codiOK.update( reintents = 3 )

                #apunto el login:
                LoginUsuari.objects.create( usuari = user, exitos = True, ip = client_address) 
                                
                url_next = '/' 
                return HttpResponseRedirect( url_next )        
            else:
                try:
                    #apunto el login:
                    LoginUsuari.objects.create( usuari = alumneUser, exitos = False, ip = client_address) 
                except:
                    pass
                form._errors.setdefault(NON_FIELD_ERRORS, []).extend(  errors  )    

    else:
        form = recuperacioDePasswdForm(   )
        
    return render(
                request,
                'form.html',
                    {'form': form,
                     'infoForm':infoForm,
                     'head': u'Recuperació de Contrasenya' 
                     }
                )