Note, you shouldn't need:

db.auth_user.password.requires.insert(0,IS_LENGTH(minsize=8))

given that you specify min_length in the CRYPT validator. You might 
consider the IS_STRONG validator as well.

Anthony

On Tuesday, August 14, 2012 11:11:42 AM UTC-4, Rob_McC wrote:
>
> Hey Jon:
>
> *Q:
> *  > BTW, are you deliberately *forbidding* upper-case letters?
>
> *A:
> *.  *Yes*, just like Google does, usernames are lowercase,
>    although if your gmail username is
>    *johnsmith*
>    you can log in with
>    *JohnSmith*, or
>    *JOHNSMITH*, or
>    *Johnsmith*
>                 etc.                     but there is ONLY ONE user.
>   
>   At least for my app, Just case lowercase names are best...
>   user's have enough trouble remembering names without burden of 
> case-sensitivity.
>    
> -------
> So, with the of this forum, I think I have nearly completed
> my Google-like Registration policy in web2py. I'll continue to test.
>
> Here is code, entire file (based on simple app, is attached  db.py)
>
> *Concern:*
> I *hope* I'm restricting the length of password correctly?
>  I just followed discussion on this forum.
>  Note:
>        Curiously, in version 1.99, the .insert works,
>          where id didn't with username.
> --
>
> thanks all,
> ~ Rob
>
> -----------------------
>
> db.py....
>
> from gluon.tools import Auth, Crud, Service, PluginManager, prettydate
> auth = Auth(db, hmac_key=Auth.get_or_create_key())
> crud, service, plugins = Crud(db), Service(), PluginManager()
>
> ## -  START CUSTOMIZATION  - - - - - - - - - - - - - - - - - - - - - - ##
>
> # | Summary:
> # |  Modify web2py to allow user registrations similar to 
> # |  Google registrations.
> # |  i.e. 
> # |   - lower case only [a-z]
> # |   - numbers [0-9] and period are OK
> # |   - can't end in a period
> # |   - can't start with a period
> # |   - can't have consecutive periods
> # |   - min 8 letter password
> # |   - username can't be changed once registered
> # |
> # |  Note: Messages are nearly same as Google displays
>
>
> ## create all tables needed by auth if not custom tables 
> #  use usernames rather than email addresses to register
> auth.define_tables(username=True)
>
> # allow username only on registration, but can only
> # be viewed (readable) in Profile
> # user can't change username once registered.
>
> if auth.is_logged_in():
>     db.auth_user.username.writable = False
>     db.auth_user.username.readable = True
>
>
> #custom message for password length - like Google
> # ref:
> """
>
> https://groups.google.com/forum/?fromgroups#!searchin/web2py/$20default$20length$20for$20password/web2py/k5os3bMz228/vG-UOLbhcBUJ[1-25]
> """
> db.auth_user.password.requires.insert(0,IS_LENGTH(minsize=8))
> db.auth_user.password.requires = CRYPT(key=auth.settings.hmac_key,min_length
> =8)
>
> #add a comments to exlain policy
> db.auth_user.password.comment='minimum 8 letters'
> db.auth_user.username.comment='min. 6 letters (a-z), you may use numbers, 
> and periods.'
>
> # apply nearly identical username policy and message that Google Accounts 
> use.
> # this OVERWRITES web2py's default username validation
> # reference and thanks to web2py community for help:
> #   
> https://groups.google.com/forum/?fromgroups#!starred/web2py/HBODB00HMfU[1-25]
>
> auth.settings.table_user.username.requires = [IS_LENGTH(30,6,'Please use 
> between 6 and 30 characters.'),
>     IS_MATCH('^[a-z0-9.]*$', error_message='Please use only letters (a-z) 
> and numbers (0-9), and periods.'),
>     IS_NOT_EMPTY(error_message='You can\'t leave this empty. '),
>     IS_EXPR("value[0]<>'.'", error_message='The FIRST character of your 
> username should be a letter (a-z) or number.'),
>     IS_EXPR("value[-1]<>'.'", error_message='The LAST character of your 
> username should be a letter (a-z) or number.'),
>     IS_EXPR("str(value).find('..')==-1",error_message='A fan of 
> punctuation! Alas, usernames can\'t have consecutive periods.'),
>     IS_NOT_IN_DB(db, auth.settings.table_user.username, 'Someone already 
> has that username. ') 
>     ]
>  
> ## -  END CUSTOMIZATION  - - - - - - - - - - - - - - - - - - - - - - ##
>
>
>

-- 



Reply via email to