# HG changeset patch # User Julien Jehannet # Date 1303482214 -7200 # Node ID fe27390bf2f8689786513e715faa33a2ac9aa255 # Parent 86bbf174e463cf27d97b0526d731ac39eae2ede7 [book] fix documentation + add chpasswd.py script diff -r 86bbf174e463 -r fe27390bf2f8 doc/book/en/annexes/faq.rst --- a/doc/book/en/annexes/faq.rst Fri Apr 22 16:24:56 2011 +0200 +++ b/doc/book/en/annexes/faq.rst Fri Apr 22 16:23:34 2011 +0200 @@ -380,11 +380,14 @@ You can prefer use a migration script similar to this shell invocation instead:: $ cubicweb-ctl shell + >>> from cubicweb import Binary >>> from cubicweb.server.utils import crypt_password >>> crypted = crypt_password('joepass') >>> rset = rql('Any U WHERE U is CWUser, U login "joe"') >>> joe = rset.get_entity(0,0) - >>> joe.set_attributes(upassword=crypted) + >>> joe.set_attributes(upassword=Binary(crypted)) + +Please, refer to the script example is provided in the `misc/examples/chpasswd.py` file. The more experimented people would use RQL request directly:: diff -r 86bbf174e463 -r fe27390bf2f8 misc/scripts/chpasswd.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/scripts/chpasswd.py Fri Apr 22 16:23:34 2011 +0200 @@ -0,0 +1,48 @@ +# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved. +# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr +# +# This file is part of CubicWeb. +# +# CubicWeb is free software: you can redistribute it and/or modify it under the +# terms of the GNU Lesser General Public License as published by the Free +# Software Foundation, either version 2.1 of the License, or (at your option) +# any later version. +# +# CubicWeb is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +# details. +# +# You should have received a copy of the GNU Lesser General Public License along +# with CubicWeb. If not, see . + +import sys +import getpass + +from cubicweb import Binary +from cubicweb.server.utils import crypt_password + + +if __args__: + login = __args__.pop() +else: + login = raw_input("login ? ") + +rset = rql('Any U WHERE U is CWUser, U login %(login)s', {'login': login}) + +if len(rset) != 1: + sys.exit("user '%s' does not exist!" % login) + +pass1 = getpass.getpass(prompt='Enter new password ? ') +pass2 = getpass.getpass(prompt='Confirm ? ') + +if pass1 != pass2: + sys.exit("passwords don't match!") + +crypted = crypt_password(pass1) + +cwuser = rset.get_entity(0,0) +cwuser.set_attributes(upassword=Binary(crypted)) +commit() + +print("password updated.")