I'm trying to build a custom type [1] to manage the bcrypt hashes [2].
---------------
from bcrypt_wrap import password
from sqlalchemy import types
class Bcrypt(types.TypeDecorator):
"""Stores a bcrypt hash of a password."""
impl = types.String #(60)
hasher = password.Password()
def process_bind_param(self, value, dialect):
return hasher.create(value)
---------------
And I've any doubts:
1) Since that the hash length is always 60, is there that use the
next?
impl = types.String(60)
2) The bcryptWrap API [3] (line 53) lets call to 'create' with
arguments 'cost' and 'admin' (boolean). Then,
a) I would that the cost could be passed from the column definition,
i.e.
password = sqlalchemy.Column(types.Bcrypt, cost=12)
or
password = sqlalchemy.Column(types.Bcrypt(cost=12))
b) This would be more hard, but I would to pass the 'admin' argument
when an object is created
u = model.User()
u.login = u'foo'
u.password = u'bar'
u.admin = True
And sou could be call:
return hasher.create(value, admin=True)
[1]
http://www.sqlalchemy.org/docs/05/reference/sqlalchemy/types.html#custom-types
[2] http://pypi.python.org/pypi/bcryptWrap/
[3] http://www.bitbucket.org/ares/bcryptwrap/src/tip/lib/bcrypt_wrap/password.py
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---