223 Commits

Author SHA1 Message Date
Rodney Ewing
cdc6b571e3 cleanup after merge 2013-05-27 08:39:34 -07:00
Rodney Ewing
bcd10ad663 Merge branch 'pre-auth' into basic_auth
Conflicts:
	mediagoblin/auth/tools.py
	mediagoblin/auth/views.py
	mediagoblin/db/migrations.py
	mediagoblin/plugins/basic_auth/lib.py
	mediagoblin/plugins/httpapiauth/__init__.py
	mediagoblin/plugins/piwigo/views.py
2013-05-27 08:25:22 -07:00
Rodney Ewing
1d321f1c71 created a check_login_simple function 2013-05-25 07:59:03 -07:00
Rodney Ewing
310a44d57c added a register_user function 2013-05-24 18:16:53 -07:00
Rodney Ewing
dd39fe6052 moved email_debug_message to gmg/tools/mail 2013-05-24 18:16:53 -07:00
Rodney Ewing
92783bc1fd moved send_verification_email to auth/tools 2013-05-24 18:16:53 -07:00
Rodney Ewing
61bfe64b23 removed unused import 2013-05-24 18:16:53 -07:00
Rodney Ewing
89e1563f68 added support for user to change email address 2013-05-24 18:16:12 -07:00
Rodney Ewing
f339b76a4e moving forgot_password views back to gmg/auth and cleanup 2013-05-24 18:09:57 -07:00
Rodney Ewing
b194f29fe3 added gen_password_hash and check_password functions to auth/__init__ 2013-05-24 16:52:50 -07:00
Rodney Ewing
57e8be21bc added focus to form input
Conflicts:
	mediagoblin/auth/views.py
	mediagoblin/plugins/openid/views.py
2013-05-24 16:52:50 -07:00
Rodney Ewing
569873d8f0 changed occurances of form.data['whatever'] to form.whatever.data
Conflicts:
	mediagoblin/plugins/basic_auth/__init__.py
	mediagoblin/plugins/openid/__init__.py
2013-05-24 16:52:49 -07:00
Rodney Ewing
5784c12d79 added a register_user function to be able to use in a plugin's register view, and modified auth/views.register to redirect to openid/register if appropriate. 2013-05-24 16:52:49 -07:00
Rodney Ewing
c3e3882e39 modified auth/__init__ hooks to work better with multiple plugins. Removed auth/lib.py. And added a basic_extra_verification function that all plugins will use. 2013-05-24 16:52:49 -07:00
Rodney Ewing
14efa7bdf1 moved fake_login_attempt to plugins 2013-05-24 16:52:49 -07:00
Rodney Ewing
c9dec8b3cc log a previously logged in user when switched to no_auth mode 2013-05-24 16:52:49 -07:00
Rodney Ewing
f644293ea8 changed from sys.exit() to raise AuthError for handling no_auth=false in config and no auth plugin present 2013-05-24 16:52:48 -07:00
Rodney Ewing
f65615eaf9 renamed hook as to no conflict with existing hook names 2013-05-24 16:52:48 -07:00
Rodney Ewing
0bd654a346 modified check_login function to return None instead of False to be able to have multiple plugins check_login 2013-05-24 16:52:48 -07:00
Rodney Ewing
9c2c9be79d moved bcrypt_gen_password_hash to basic_auth/tools and added gen_password_hash function to auth/__init__ 2013-05-24 16:52:48 -07:00
Rodney Ewing
d54cf48a33 moved bcrypt_check_password to basic_auth/tools from auth/lib 2013-05-24 16:52:48 -07:00
Rodney Ewing
744f1c83b9 add a check for authentication plugin on startup and respond according to no_auth config option. allows instance to be run w/o authentication 2013-05-24 16:52:48 -07:00
Rodney Ewing
58460a8301 moved forgot pw views to basic_auth plugin 2013-05-24 16:52:47 -07:00
Rodney Ewing
ee355966c8 basic_auth v0 plugin working 2013-05-24 16:51:27 -07:00
Rodney Ewing
7cb7653c64 moved normalize_user_or_email_field to auth/tools.py from auth/forms.py 2013-05-23 14:29:19 -07:00
Christopher Allan Webber
a789b713f5 Switching non-forms back to using normal pass_to_ugettext 2013-04-24 16:40:30 -05:00
Aditi Mittal
665b9c420a Fix-bug-667-Use-lazy_pass_to_ugettext-for-forms. 2013-04-24 16:40:29 -05:00
Jessica T
b2c8dbcf85 Allows you to use your username or email to login 2013-04-12 22:07:44 +01:00
Hans Lo
9d140cb842 Use WTForms data field in auth/views.py 2013-03-28 04:26:33 -04:00
Hans Lo
dfa6994d4d auth: whitespace cleanup in views.py 2013-03-28 01:32:44 -04:00
András Veres-Szentkirályi
bedc215b44 removed unused import re 2013-02-22 22:24:29 +01:00
Sebastian Spaeth
69b5623552 Also set login_failed in case of form errors
If we send a POST request to the login page which contained form errors
(e.g. a too short password), the variable "login_failed" was not set to
true. This condition was tested by the test suite however, so we should
make sure that login_failed is set even if the form failed to validate.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2013-01-21 17:15:39 +01:00
Sebastian Spaeth
a89df96132 Restructure ForgotPassword view
1) Remove mongo limitations (no 'or' when querying for either username
or email).

2) Lost password function revealed if an user name or email address
   is registered, which can be considered a data leak.
   Leaking user names is OK, they are public anyway, but don't reveal
   lookup success in case the lookup happened by email address.
   Simply respond: "If you have an account here, we have send you
                    your email"?

3) username and email search was case sensitive. Made username search
   case insensitive (they are always stored lowercase in the db).
   Keep email-address search case sensitive for now. This might need
   further discussion

4) Remove a whole bunch of indention in the style of:
   if no error:
        ...
        if no error:
            ...
            if no error:
                actually do something in the regular case

   by restructuring the function.

5) Outsource the sanity checking for username and email fields into the
   validator function. This way, we get automatic case sanity checking
   and sanitizing for all required fields.

6) Require 5-char password and fix tests

   Originally, the Change password form required a password between 6-30
   chars while the registration and login form did not require anything
   special. This commit introduces a common minimum limit for all forms
   which breaks the test suite which uses a 5 char password by
   default. :-).  As 5 chars seem sensible enough to enforce (people
   should be picking much longer ones anyway), just reduce the limit to
   5 chars, thereby making all tests pass.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2013-01-21 17:14:59 +01:00
Sebastian Spaeth
b0c8328e54 Move db.sql.models* to db.models* 2013-01-07 11:44:29 +01:00
Elrond
b39d1f2351 Mongo removal: Remove the validate=True arg to obj.save()
all callers were forced to use validate=True anyway. So
remove this useless stuff.
2012-12-24 00:07:24 +01:00
Sebastian Spaeth
70f8b2d046 Remove mongolisms from auth.views
Remove find find_one etc and use sqlalchemy syntax
2012-12-21 11:30:29 +01:00
Sebastian Spaeth
950124e640 webob.HTTPFound --> MG.tools.redirect
Transition away from webob.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-12-21 08:11:40 +01:00
Sebastian Spaeth
5c2b84869f Move DBModel._id -> DBModel.id
We were refering to model._id in most of the code base as this is
what Mongo uses. However, each use of _id required a) fixup of queries:
e.g. what we did in our find() and find_one() functions moving all
'_id' to 'id'. It also required using AliasFields to make the ._id
attribute available. This all means lots of superfluous fixing and
transitioning in a SQL world.

It will also not work in the long run. Much newer code already refers
to the objects by model.id (e.g. in the oauth plugin), which will break
with Mongo. So let's be honest, rip out the _id mongoism and live with
.id as the one canonical way to address objects.

This commit modifies all users and providers of model._id to use
model.id instead. This patch works with or without Mongo removed first,
but will break Mongo usage (even more than before)

I have not bothered to fixup db.mongo.* and db.sql.convert
(which converts from Mongo to SQL)

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2012-12-21 00:30:48 +01:00
Joar Wandborg
d56e82635f Fixed OAuth access_token duplicate route
Changed route name to "[...]list_connections"
2012-10-15 22:59:53 +02:00
Christopher Allan Webber
0d857844b1 Added rudimentary route "mounting" w/ werkzeug routes; fixed auth routes
auth routes fixes:
 - mounted the auth routes at /auth/
 - removed crufty old verification email route
2012-10-14 16:26:23 -05:00
Joar Wandborg
1ec7ff2adb Fixed 404 page under werkzeug.routing
- Removed ?lang=<langcode> feature due to incompatibility with werkzeug
  routes in the current state of the architecture.
2012-10-14 20:05:44 +02:00
Joar Wandborg
7742dcc1fb Switched most stuff over from Routes
Removed the Routes routing functionality and replaced it with
werkzeug.routes. Most views are functional.

Known issues:

 - Translation integration with the request object is not yet figured
   out. This breaks 404 pages.
2012-10-14 13:46:31 +02:00
Joar Wandborg
111a609df5 Replaced all request.POST with request.form, ...
- Fixed error handling in OAuth plugin
- Changed request.POST file fields to request.files
2012-09-29 21:08:20 +02:00
Will Kahn-Greene
a855e92a98 Fix problems from pyflakes output 2012-06-03 15:53:34 -04:00
Jakob Kramer
f646e2e11b use _ function on some now untranslatable strings 2012-04-19 20:15:07 +02:00
Jakob Kramer
952b97d5a0 set username default server-side 2012-03-25 21:51:09 +02:00
Christopher Allan Webber
1f36e6bee9 Merge remote-tracking branch 'derek-moore/bug293_non_ascii_password' 2012-03-12 18:19:03 -05:00
Derek Moore
20a3e278bc Changes for 293. Tests pass, encode UTF8 on password on registration (and also for subsequent logins once the user is created) is working. 2012-03-12 16:02:42 -07:00
Elrond
84812db59d Change user search from .one to .fine_one.
When searching for a user by username, there can either be
no result or one result. There is a unique constraint on
the db.

.one in mongokit raises an error for more than one result.
But that can't happen anyway. So no problem.

.one in sqlalchemy raises an error for more than one, but
that's not a problem anyway. It also raises an error for no
result. But no result is handled by the code anyway, so no
need to raise an exception.

.find_one doesn't raise an exception for more than one
result (no problem anyway) and just returns None for no
result. The later is handled by the code.
2012-03-12 23:46:04 +01:00
Elrond
53280164e2 47: Only lowercase host part of email
According to most documentation it seems that the local
part of an email adress is/can be case sensitive. While
the host part is not.
So we lowercase only the host part of the given adress.

See: http://issues.mediagoblin.org/ticket/47
2012-02-13 23:20:04 +01:00