summaryrefslogtreecommitdiff
path: root/docs/tutorials/bfgwiki/src
diff options
context:
space:
mode:
Diffstat (limited to 'docs/tutorials/bfgwiki/src')
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/setup.py1
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/tutorial.ini5
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/tutorial/configure.zcml3
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/tutorial/login.py43
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/tutorial/run.py13
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/tutorial/templates/login.pt32
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/tutorial/templates/view.pt2
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/tutorial/views.py18
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/who.ini40
-rw-r--r--docs/tutorials/bfgwiki/src/authorization/wiki.passwd1
10 files changed, 95 insertions, 63 deletions
diff --git a/docs/tutorials/bfgwiki/src/authorization/setup.py b/docs/tutorials/bfgwiki/src/authorization/setup.py
index 6d300b473..b289ca8b0 100644
--- a/docs/tutorials/bfgwiki/src/authorization/setup.py
+++ b/docs/tutorials/bfgwiki/src/authorization/setup.py
@@ -15,7 +15,6 @@ requires = [
'ZODB3',
'repoze.zodbconn',
'repoze.tm',
- 'repoze.who',
]
setup(name='tutorial',
diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial.ini b/docs/tutorials/bfgwiki/src/authorization/tutorial.ini
index d30aa2672..181682585 100644
--- a/docs/tutorials/bfgwiki/src/authorization/tutorial.ini
+++ b/docs/tutorials/bfgwiki/src/authorization/tutorial.ini
@@ -8,16 +8,11 @@ debug_authorization = false
debug_notfound = false
zodb_uri = file://%(here)s/Data.fs?connection_cache_size=20000
-[filter:who]
-use = egg:repoze.who#config
-config_file = %(here)s/who.ini
-
[pipeline:main]
pipeline =
egg:repoze.zodbconn#closer
egg:Paste#evalerror
egg:repoze.tm#tm
- who
zodb
[server:main]
diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/configure.zcml b/docs/tutorials/bfgwiki/src/authorization/tutorial/configure.zcml
index b1501597d..df11c18b1 100644
--- a/docs/tutorials/bfgwiki/src/authorization/tutorial/configure.zcml
+++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/configure.zcml
@@ -5,4 +5,7 @@
<scan package="."/>
+ <utility provides="repoze.bfg.interfaces.IForbiddenResponseFactory"
+ component=".login.login"/>
+
</configure>
diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/login.py b/docs/tutorials/bfgwiki/src/authorization/tutorial/login.py
new file mode 100644
index 000000000..c4c595e81
--- /dev/null
+++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/login.py
@@ -0,0 +1,43 @@
+from webob.exc import HTTPFound
+
+from repoze.bfg.chameleon_zpt import render_template_to_response
+from repoze.bfg.security import remember
+from repoze.bfg.security import forget
+from repoze.bfg.view import bfg_view
+from repoze.bfg.url import model_url
+
+from tutorial.models import Wiki
+from tutorial.run import USERS
+
+@bfg_view(for_=Wiki, name='login')
+def login(context, request):
+ referrer = request.environ.get('HTTP_REFERER', '/')
+ came_from = request.params.get('came_from', referrer)
+ message = ''
+ login = ''
+ password = ''
+ if 'form.submitted' in request.params:
+ login = request.params['login']
+ password = request.params['password']
+ if USERS.get(login) == password:
+ headers = remember(context, request, login)
+ return HTTPFound(location = came_from,
+ headers = headers)
+ message = 'Failed login'
+
+ return render_template_to_response(
+ 'templates/login.pt',
+ message = message,
+ url = request.application_url + '/login',
+ came_from = came_from,
+ login = login,
+ password = password,
+ request =request,
+ )
+
+@bfg_view(for_=Wiki, name='logout')
+def logout(context, request):
+ headers = forget(context, request)
+ return HTTPFound(location = model_url(context, request),
+ headers = headers)
+
diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/run.py b/docs/tutorials/bfgwiki/src/authorization/tutorial/run.py
index 45920615f..a5d0cf39c 100644
--- a/docs/tutorials/bfgwiki/src/authorization/tutorial/run.py
+++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/run.py
@@ -1,5 +1,5 @@
from repoze.bfg.router import make_app
-from repoze.bfg.authentication import RepozeWho1AuthenticationPolicy
+from repoze.bfg.authentication import AuthTktAuthenticationPolicy
from repoze.zodbconn.finder import PersistentApplicationFinder
@@ -15,8 +15,17 @@ def app(global_config, **kw):
if zodb_uri is None:
raise ValueError("No 'zodb_uri' in application configuration.")
- authpolicy = RepozeWho1AuthenticationPolicy()
+ authpolicy = AuthTktAuthenticationPolicy('seekr!t', callback=groupfinder)
get_root = PersistentApplicationFinder(zodb_uri, appmaker)
return make_app(get_root, tutorial, authentication_policy=authpolicy,
options=kw)
+
+USERS = {'editor':'editor',
+ 'viewer':'viewer'}
+GROUPS = {'editor':['group.editors']}
+
+def groupfinder(userid):
+ if userid in USERS:
+ return GROUPS.get(userid, [])
+
diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/templates/login.pt b/docs/tutorials/bfgwiki/src/authorization/tutorial/templates/login.pt
new file mode 100644
index 000000000..a9e086461
--- /dev/null
+++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/templates/login.pt
@@ -0,0 +1,32 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:tal="http://xml.zope.org/namespaces/tal">
+
+<head>
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
+ <title>bfg tutorial wiki (based on TurboGears 20-Minute Wiki)</title>
+ <link rel="stylesheet" type="text/css"
+ href="${request.application_url}/static/style.css" />
+</head>
+
+<body>
+
+<h1>Log In</h1>
+
+<div tal:replace="message"/>
+
+<div class="main_content">
+ <form action="${url}" method="post">
+ <input type="hidden" name="came_from" value="${came_from}"/>
+ <input type="text" name="login" value="${login}"/>
+ <br/>
+ <input type="password" name="password" value="${password}"/>
+ <br/>
+ <input type="submit" name="form.submitted" value="Log In"/>
+ </form>
+</div>
+
+</body>
+</html>
diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/templates/view.pt b/docs/tutorials/bfgwiki/src/authorization/tutorial/templates/view.pt
index cae6940c2..3c5cc2a33 100644
--- a/docs/tutorials/bfgwiki/src/authorization/tutorial/templates/view.pt
+++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/templates/view.pt
@@ -17,7 +17,7 @@
<div style="float:right; width: 10em;"> Viewing
<span tal:replace="page.__name__">Page Name Goes Here</span> <br/>
You can return to the <a href="${request.application_url}">FrontPage</a>.
- <span tal:condition="logged_in"><a href="${request.application_url}/logout">Logout</a></span>
+<span tal:condition="logged_in"><a href="${request.application_url}/logout">Logout</a></span>
</div>
<div tal:replace="structure content">Page text goes here.</div>
diff --git a/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py b/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py
index 7beab58b0..1d3e57de3 100644
--- a/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py
+++ b/docs/tutorials/bfgwiki/src/authorization/tutorial/views.py
@@ -4,6 +4,9 @@ import re
from webob.exc import HTTPFound
from repoze.bfg.url import model_url
from repoze.bfg.chameleon_zpt import render_template_to_response
+
+from repoze.bfg.security import authenticated_userid
+
from repoze.bfg.view import static
from repoze.bfg.view import bfg_view
@@ -41,7 +44,7 @@ def view_page(context, request):
content = wikiwords.sub(check, content)
edit_url = model_url(context, request, 'edit_page')
- logged_in = 'repoze.who.identity' in request.environ
+ logged_in = authenticated_userid(context, request)
return render_template_to_response('templates/view.pt',
request = request,
@@ -88,15 +91,4 @@ def edit_page(context, request):
save_url = model_url(context, request,
'edit_page')
)
-
-
-@bfg_view(for_=Wiki, name='logout')
-def logout(context, request):
- identity = request.environ.get('repoze.who.identity')
- headers = []
- if identity is not None:
- auth_tkt = request.environ['repoze.who.plugins']['auth_tkt']
- headers = auth_tkt.forget(request.environ, identity)
- return HTTPFound(location = model_url(context, request),
- headers = headers)
-
+
diff --git a/docs/tutorials/bfgwiki/src/authorization/who.ini b/docs/tutorials/bfgwiki/src/authorization/who.ini
deleted file mode 100644
index 73d820b3d..000000000
--- a/docs/tutorials/bfgwiki/src/authorization/who.ini
+++ /dev/null
@@ -1,40 +0,0 @@
-[plugin:form]
-# identification and challenge
-use = repoze.who.plugins.form:make_plugin
-login_form_qs = __do_login
-rememberer_name = auth_tkt
-
-[plugin:auth_tkt]
-# identification
-use = repoze.who.plugins.auth_tkt:make_plugin
-secret = s33kr1t
-cookie_name = oatmeal
-secure = False
-include_ip = False
-
-[plugin:htpasswd]
-# authentication
-use = repoze.who.plugins.htpasswd:make_plugin
-filename = %(here)s/wiki.passwd
-check_fn = repoze.who.plugins.htpasswd:plain_check
-
-[general]
-request_classifier = repoze.who.classifiers:default_request_classifier
-challenge_decider = repoze.who.classifiers:default_challenge_decider
-
-[identifiers]
-# plugin_name;classifier_name:.. or just plugin_name (good for any)
-plugins =
- form;browser
- auth_tkt
-
-[authenticators]
-# plugin_name;classifier_name.. or just plugin_name (good for any)
-plugins =
- htpasswd
-
-[challengers]
-# plugin_name;classifier_name:.. or just plugin_name (good for any)
-plugins =
- form
-
diff --git a/docs/tutorials/bfgwiki/src/authorization/wiki.passwd b/docs/tutorials/bfgwiki/src/authorization/wiki.passwd
deleted file mode 100644
index c9cd6fe83..000000000
--- a/docs/tutorials/bfgwiki/src/authorization/wiki.passwd
+++ /dev/null
@@ -1 +0,0 @@
-editor:editor