Hi again Massimo! I've tried this:
check: >>> print 'check:', any(r.password.startswith('|') for r in rows) check: True Hope this helps. El martes, 18 de diciembre de 2012 20:55:06 UTC+1, Massimo Di Pierro escribió: > > Can you please check something for me: > > python web2py.py -S yourappname -M > >>> rows = db(db.auth_user).select(db.auth_user.password) > >>> print 'check:', any(r.passwords.startswith('|') for r in rows): > > does it print check: true or check: false? > > Massimo > > > On Tuesday, 18 December 2012 13:40:41 UTC-6, Wonton wrote: >> >> 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 >>>>>> >>>>> --