| OLD | NEW |
| (Empty) |
| 1 # -*- test-case-name: twisted.test.test_strcred -*- | |
| 2 # | |
| 3 # Copyright (c) 2007-2008 Twisted Matrix Laboratories. | |
| 4 # See LICENSE for details. | |
| 5 | |
| 6 """ | |
| 7 Cred plugin for an in-memory user database. | |
| 8 """ | |
| 9 | |
| 10 from zope.interface import implements | |
| 11 | |
| 12 from twisted import plugin | |
| 13 from twisted.cred.strcred import ICheckerFactory | |
| 14 from twisted.cred.checkers import InMemoryUsernamePasswordDatabaseDontUse | |
| 15 from twisted.cred.credentials import IUsernamePassword, IUsernameHashedPassword | |
| 16 | |
| 17 | |
| 18 | |
| 19 inMemoryCheckerFactoryHelp = """ | |
| 20 A checker that uses an in-memory user database. | |
| 21 | |
| 22 This is only of use in one-off test programs or examples which | |
| 23 don't want to focus too much on how credentials are verified. You | |
| 24 really don't want to use this for anything else. It is a toy. | |
| 25 """ | |
| 26 | |
| 27 | |
| 28 | |
| 29 class InMemoryCheckerFactory(object): | |
| 30 """ | |
| 31 A factory for in-memory credentials checkers. | |
| 32 | |
| 33 This is only of use in one-off test programs or examples which don't | |
| 34 want to focus too much on how credentials are verified. | |
| 35 | |
| 36 You really don't want to use this for anything else. It is, at best, a | |
| 37 toy. If you need a simple credentials checker for a real application, | |
| 38 see L{cred_passwd.PasswdCheckerFactory}. | |
| 39 """ | |
| 40 implements(ICheckerFactory, plugin.IPlugin) | |
| 41 authType = 'memory' | |
| 42 authHelp = inMemoryCheckerFactoryHelp | |
| 43 argStringFormat = 'A colon-separated list (name:password:...)' | |
| 44 credentialInterfaces = (IUsernamePassword, | |
| 45 IUsernameHashedPassword) | |
| 46 | |
| 47 def generateChecker(self, argstring): | |
| 48 """ | |
| 49 This checker factory expects to get a list of | |
| 50 username:password pairs, with each pair also separated by a | |
| 51 colon. For example, the string 'alice:f:bob:g' would generate | |
| 52 two users, one named 'alice' and one named 'bob'. | |
| 53 """ | |
| 54 checker = InMemoryUsernamePasswordDatabaseDontUse() | |
| 55 if argstring: | |
| 56 pieces = argstring.split(':') | |
| 57 if len(pieces) % 2: | |
| 58 from twisted.cred.strcred import InvalidAuthArgumentString | |
| 59 raise InvalidAuthArgumentString( | |
| 60 "argstring must be in format U:P:...") | |
| 61 for i in range(0, len(pieces), 2): | |
| 62 username, password = pieces[i], pieces[i+1] | |
| 63 checker.addUser(username, password) | |
| 64 return checker | |
| 65 | |
| 66 | |
| 67 | |
| 68 theInMemoryCheckerFactory = InMemoryCheckerFactory() | |
| OLD | NEW |