Hi again Massimo!

Since I've changed very few from the basic project I will paste my code 
here (sorry for my comments and variable names in Spanish, if you want I 
could translate the code) .

This is my default.py file:

servicios_publicos=Service()
servicios_privados=Service()

def public_call(): 
    return servicios_publicos()

@auth.requires_login()
def private_call(): 
    return servicios_privados()

@servicios_publicos.json
def registra(usuario, email, password):
    respuesta = {}
    estado = 'OK'
    mensaje = ''
    tipoError = 0
    #Comprueba si hay otro usuario con el mismo nombre
    if db(db.auth_user.username == usuario).count() != 0:
        estado = 'Error'
        tipoError = 1
    #Comprueba si hay otro usuario con el mismo email
    if db(db.auth_user.email == email).count() != 0:
        estado = 'Error'
        tipoError = tipoError + 2
    #Registrar
    if estado == 'OK':
        db.auth_user.insert(username=usuario, email=email, password=db.
auth_user.password.validate(password)) 
        mensaje = 'El registro se ha realizado correctamente.'
    else:
        if tipoError == 1:
            mensaje = 'El usuario ya existe.'
        elif tipoError == 2:
            mensaje = 'El email ya existe.'
        else:
            mensaje = 'El usuario y el email ya existen.'
    respuesta['estado'] = estado    
    respuesta['mensaje'] = mensaje
    return respuesta

@servicios_publicos.json
def login(usuario, password):
    respuesta = {}
    user = auth.login_bare(usuario, password)
    if not user:
        respuesta['estado'] = 'Error'    
        respuesta['mensaje'] = 'Nombre de usuario o contraseña incorrecta'
    else:
        respuesta['estado'] = 'OK'    
        respuesta['mensaje'] = 'Login correcto'
    return respuesta


And this is my db.py:

if not request.env.web2py_runtime_gae:
    ## if NOT running on Google App Engine use SQLite or other DB
    db = DAL('sqlite://storage.sqlite')
else:
    ## connect to Google BigTable (optional 'google:datastore://namespace')
    db = DAL('google:datastore')
    ## store sessions and tickets there
    session.connect(request, response, db=db)
    ## or store session in Memcache, Redis, etc.
    ## from gluon.contrib.memdb import MEMDB
    ## from google.appengine.api.memcache import Client
    ## session.connect(request, response, db = MEMDB(Client()))

## by default give a view/generic.extension to all actions from localhost
## none otherwise. a pattern can be 'controller/function.extension'
response.generic_patterns = ['*'] if request.is_local else []
## (optional) optimize handling of static files
# response.optimize_css = 'concat,minify,inline'
# response.optimize_js = 'concat,minify,inline'

#########################################################################
## Here is sample code if you need for
## - email capabilities
## - authentication (registration, login, logout, ... )
## - authorization (role based authorization)
## - services (xml, csv, json, xmlrpc, jsonrpc, amf, rss)
## - old style crud actions
## (more options discussed in gluon/tools.py)
#########################################################################

from gluon.tools import Auth, Crud, Service, PluginManager, prettydate
auth = Auth(db)
crud, service, plugins = Crud(db), Service(), PluginManager()

## create all tables needed by auth if not custom tables
auth.define_tables(username=True, signature=False)

## configure email
mail = auth.settings.mailer
mail.settings.server = '<here comes my SMTP server>'
mail.settings.sender = '<here comes my email>'
mail.settings.login = '<here comes my email user/password>'

## configure auth policy
auth.settings.registration_requires_verification = False
auth.settings.registration_requires_approval = False
auth.settings.reset_password_requires_verification = True

## if you need to use OpenID, Facebook, MySpace, Twitter, Linkedin, etc.
## register with janrain.com, write your domain:api_key in 
private/janrain.key
from gluon.contrib.login_methods.rpx_account import use_janrain
use_janrain(auth, filename='private/janrain.key')

If it helps you, I'm using python 2.7.1 and I launch web2py with:
python web2py.py -c server.crt -k server.key
and this is the trace:
Database drivers available: SQLite(sqlite3), MySQL(pymysql), 
PostgreSQL(pg8000), IMAP(imaplib)

El martes, 18 de diciembre de 2012 18:11:51 UTC+1, Massimo Di Pierro 
escribió:
>
> Can I see you models? Are you changing the validator for 
> db.auth_user.password?
> Your error says:
>
> <type 'exceptions.ValueError'> unsupported hash type 
> |pbkdf2(1000,20,sha512)
>
> I do not understand where | in  |pbkdf2 would come from.
>
>
> On Tuesday, 18 December 2012 09:33:12 UTC-6, Wonton wrote:
>>
>> Hi Massimo!!
>>
>> I'm using version 2.2.1 (2012-10-21 16:57:04) stable. I dowloaded it last 
>> week.
>>
>> El martes, 18 de diciembre de 2012 16:26:29 UTC+1, Massimo Di Pierro 
>> escribió:
>>>
>>> Which web2py version? The error suggests you are using an older web2py 
>>> version with newly created database of records.
>>>
>>> Massimo
>>>
>>> On Monday, 17 December 2012 14:59:02 UTC-6, Wonton wrote:
>>>>
>>>> Hello everyone,
>>>>
>>>> I'm developing a backend site with web2py. I have 2 web services, one 
>>>> to register a user and a second one to login the user.
>>>> This is the first one:
>>>>
>>>> def register(user, email, password):
>>>>      db.auth_user.insert(username=user, email=email, 
>>>> password=db.auth_user.password.validate(password)) 
>>>>     ...
>>>>      return 'OK'
>>>>
>>>> It's working ok and the users are created without problem.
>>>>
>>>> This is the second one:
>>>>
>>>> def login(user, password):
>>>>     response = auth.login_bare(user, password)
>>>>      if not response:
>>>>         message = 'Error'
>>>>     else:
>>>>          message = 'OK'
>>>>    return message
>>>>
>>>> With this service I have the following error:
>>>> <type 'exceptions.ValueError'> unsupported hash type 
>>>> |pbkdf2(1000,20,sha512)
>>>>
>>>> I've tried to find any solution to this problem without success.
>>>>
>>>> Any of you has any idea of what is happening?
>>>>
>>>> Thank you very much and kind regards!
>>>>
>>>> Wonton
>>>>
>>>

-- 



Reply via email to