Пример #1
0
    def doLater(self, args):
        if not args:
            self.stderr.write('Please specify the name of the user to add.\n')
            defer.returnValue(3)
            return

        user = args[0]

        h = hashlib.sha1()

        password = self.getRootCommand().getPassword()
        h.update(password)
        del password

        salt = os.urandom(16).encode('hex')
        h.update(salt)

        password_sha = h.hexdigest()

        roles = self.options.roles

        docId = "org.couchdb.user:"******"_id": docId,
            "type": "user",
            "name": user,
            "roles": roles,
            "password_sha": password_sha,
            "salt": salt
        }

        self.debug('Saving doc %r', doc)
        try:
            d = self.getRootCommand().getAdminClient().saveDoc('_users',
                doc, docId)
        except Exception, e:
            self.warning('saveDoc triggered exception: %s',
                log.getExceptionMessage(e))
            raise
Пример #2
0
        try:
            result = yield d
        except error.Error, e:
            if e.status == http.CONFLICT:
                self.stderr.write("Error: the user '%s' already exists.\n" %
                    user)
                defer.returnValue(3)
                return

            ret = handleCouchException(self, e)
            if ret:
                defer.returnValue(ret)
                return
        except Exception, e:
            self.warning('yielding saveDoc triggered exception: %s',
                log.getExceptionMessage(e))
            raise

        if result['ok']:
            self.stdout.write("Added user '%s'.\n" % user)
        else:
            self.stdout.write("Unknown error.  Result: %r\n" % result)


class Delete(logcommand.TwistedLogCommand):

    usage = """USER [.. USER]"""
    description = """Delete given user(s)"""


    @defer.inlineCallbacks