Show More
@@ -29,8 +29,6 b' from pkg_resources import iter_entry_points' | |||
|
29 | 29 | import appenlight.lib.jinja2_filters as jinja2_filters |
|
30 | 30 | import appenlight.lib.encryption as encryption |
|
31 | 31 | |
|
32 | from authomatic.providers import oauth2, oauth1 | |
|
33 | from authomatic import Authomatic | |
|
34 | 32 | from pyramid.config import PHASE3_CONFIG |
|
35 | 33 | from pyramid.authentication import AuthTktAuthenticationPolicy |
|
36 | 34 | from pyramid.authorization import ACLAuthorizationPolicy |
@@ -125,6 +123,8 b' def main(global_config, **settings):' | |||
|
125 | 123 | 'unsafe_json_body', reify=True) |
|
126 | 124 | config.add_request_method('appenlight.lib.request.add_flash_to_headers', |
|
127 | 125 | 'add_flash_to_headers') |
|
126 | config.add_request_method('appenlight.lib.request.get_authomatic', | |
|
127 | 'authomatic', reify=True) | |
|
128 | 128 | |
|
129 | 129 | config.include('pyramid_redis_sessions') |
|
130 | 130 | config.include('pyramid_tm') |
@@ -181,49 +181,6 b' def main(global_config, **settings):' | |||
|
181 | 181 | 'appenlight.scripts', |
|
182 | 182 | 'appenlight.tests']) |
|
183 | 183 | |
|
184 | # authomatic social auth | |
|
185 | authomatic_conf = { | |
|
186 | # callback http://yourapp.com/social_auth/twitter | |
|
187 | 'twitter': { | |
|
188 | 'class_': oauth1.Twitter, | |
|
189 | 'consumer_key': settings.get('authomatic.pr.twitter.key', 'X'), | |
|
190 | 'consumer_secret': settings.get('authomatic.pr.twitter.secret', | |
|
191 | 'X'), | |
|
192 | }, | |
|
193 | # callback http://yourapp.com/social_auth/facebook | |
|
194 | 'facebook': { | |
|
195 | 'class_': oauth2.Facebook, | |
|
196 | 'consumer_key': settings.get('authomatic.pr.facebook.app_id', 'X'), | |
|
197 | 'consumer_secret': settings.get('authomatic.pr.facebook.secret', | |
|
198 | 'X'), | |
|
199 | 'scope': ['email'], | |
|
200 | }, | |
|
201 | # callback http://yourapp.com/social_auth/google | |
|
202 | 'google': { | |
|
203 | 'class_': oauth2.Google, | |
|
204 | 'consumer_key': settings.get('authomatic.pr.google.key', 'X'), | |
|
205 | 'consumer_secret': settings.get( | |
|
206 | 'authomatic.pr.google.secret', 'X'), | |
|
207 | 'scope': ['profile', 'email'], | |
|
208 | }, | |
|
209 | 'github': { | |
|
210 | 'class_': oauth2.GitHub, | |
|
211 | 'consumer_key': settings.get('authomatic.pr.github.key', 'X'), | |
|
212 | 'consumer_secret': settings.get( | |
|
213 | 'authomatic.pr.github.secret', 'X'), | |
|
214 | 'scope': ['repo', 'public_repo', 'user:email'], | |
|
215 | 'access_headers': {'User-Agent': 'AppEnlight'}, | |
|
216 | }, | |
|
217 | 'bitbucket': { | |
|
218 | 'class_': oauth1.Bitbucket, | |
|
219 | 'consumer_key': settings.get('authomatic.pr.bitbucket.key', 'X'), | |
|
220 | 'consumer_secret': settings.get( | |
|
221 | 'authomatic.pr.bitbucket.secret', 'X') | |
|
222 | } | |
|
223 | } | |
|
224 | config.registry.authomatic = Authomatic( | |
|
225 | config=authomatic_conf, secret=settings['authomatic.secret']) | |
|
226 | ||
|
227 | 184 | # resource type information |
|
228 | 185 | config.registry.resource_types = ['resource', 'application'] |
|
229 | 186 |
@@ -19,9 +19,14 b'' | |||
|
19 | 19 | # services, and proprietary license terms, please see |
|
20 | 20 | # https://rhodecode.com/licenses/ |
|
21 | 21 | |
|
22 | import appenlight.lib.helpers as helpers | |
|
23 | 22 | import json |
|
23 | ||
|
24 | 24 | from pyramid.security import unauthenticated_userid |
|
25 | ||
|
26 | import appenlight.lib.helpers as helpers | |
|
27 | ||
|
28 | from authomatic.providers import oauth2, oauth1 | |
|
29 | from authomatic import Authomatic | |
|
25 | 30 | from appenlight.models.user import User |
|
26 | 31 | |
|
27 | 32 | |
@@ -87,3 +92,49 b' def add_flash_to_headers(request, clear=True):' | |||
|
87 | 92 | flash_msgs = helpers.get_type_formatted_flash(request) |
|
88 | 93 | request.response.headers['x-flash-messages'] = json.dumps(flash_msgs) |
|
89 | 94 | helpers.clear_flash(request) |
|
95 | ||
|
96 | ||
|
97 | def get_authomatic(request): | |
|
98 | settings = request.registry.settings | |
|
99 | # authomatic social auth | |
|
100 | authomatic_conf = { | |
|
101 | # callback http://yourapp.com/social_auth/twitter | |
|
102 | 'twitter': { | |
|
103 | 'class_': oauth1.Twitter, | |
|
104 | 'consumer_key': settings.get('authomatic.pr.twitter.key', ''), | |
|
105 | 'consumer_secret': settings.get('authomatic.pr.twitter.secret', | |
|
106 | ''), | |
|
107 | }, | |
|
108 | # callback http://yourapp.com/social_auth/facebook | |
|
109 | 'facebook': { | |
|
110 | 'class_': oauth2.Facebook, | |
|
111 | 'consumer_key': settings.get('authomatic.pr.facebook.app_id', 'X'), | |
|
112 | 'consumer_secret': settings.get('authomatic.pr.facebook.secret', | |
|
113 | ''), | |
|
114 | 'scope': ['email'], | |
|
115 | }, | |
|
116 | # callback http://yourapp.com/social_auth/google | |
|
117 | 'google': { | |
|
118 | 'class_': oauth2.Google, | |
|
119 | 'consumer_key': settings.get('authomatic.pr.google.key', ''), | |
|
120 | 'consumer_secret': settings.get( | |
|
121 | 'authomatic.pr.google.secret', ''), | |
|
122 | 'scope': ['profile', 'email'], | |
|
123 | }, | |
|
124 | 'github': { | |
|
125 | 'class_': oauth2.GitHub, | |
|
126 | 'consumer_key': settings.get('authomatic.pr.github.key', ''), | |
|
127 | 'consumer_secret': settings.get( | |
|
128 | 'authomatic.pr.github.secret', ''), | |
|
129 | 'scope': ['repo', 'public_repo', 'user:email'], | |
|
130 | 'access_headers': {'User-Agent': 'AppEnlight'}, | |
|
131 | }, | |
|
132 | 'bitbucket': { | |
|
133 | 'class_': oauth1.Bitbucket, | |
|
134 | 'consumer_key': settings.get('authomatic.pr.bitbucket.key', ''), | |
|
135 | 'consumer_secret': settings.get( | |
|
136 | 'authomatic.pr.bitbucket.secret', '') | |
|
137 | } | |
|
138 | } | |
|
139 | return Authomatic( | |
|
140 | config=authomatic_conf, secret=settings['authomatic.secret']) |
@@ -512,7 +512,7 b' def social_auth(request):' | |||
|
512 | 512 | |
|
513 | 513 | # Start the login procedure. |
|
514 | 514 | adapter = WebObAdapter(request, request.response) |
|
515 |
result = request |
|
|
515 | result = request.authomatic.login(adapter, provider_name) | |
|
516 | 516 | if result: |
|
517 | 517 | if result.error: |
|
518 | 518 | return handle_auth_error(request, result) |
General Comments 0
You need to be logged in to leave comments.
Login now