Skip to content
This repository has been archived by the owner on Jul 30, 2024. It is now read-only.

Added config option 'SECURITY_USER_ACTIVE_BY_DEFAULT' #760

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions flask_security/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@
],
'DEPRECATED_HASHING_SCHEMES': ['hex_md5'],
'DATETIME_FACTORY': datetime.utcnow,
'USER_ACTIVE_BY_DEFAULT': True,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please move it close to USER_IDENTITY_ATTRIBUTES option?

Copy link
Author

@eliaperantoni eliaperantoni Jul 7, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't USER_IDENTITY_ATTRIBUTES specify what user attributes uniquely identify it?

If so, I didn't meant this thing to be a user-specific attribute but rather an application-wise configuration that determines whether or not new users are active by default therefore being able to login without being reviewed. That's why I made USER_ACTIVE_BY_DEFAULT a configuration value flask-security wise.

Thing of this way: you can set USER_ACTIVE_BY_DEFAULT to True and you'll have a standard registration, as soon as you register and confirm your email you can login.
On the other hand, if you set USER_ACTIVE_BY_DEFAULT to False, after you register you will have to wait for administrators to approve your account before being able to log in.

It's basically designed for restricted-access websites.

Copy link
Contributor

@jirikuncar jirikuncar Oct 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It sounds good. I was a bit confused by the name. Can you add the documentation and consider changing the name to something around:

  • MANUAL_USER_ACTIVATION
  • RESTRICT_REGISTRATION
    ...

Copy link
Author

@eliaperantoni eliaperantoni Oct 17, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure! Check out the new commit

}

#: Default Flask-Security messages
Expand Down
4 changes: 2 additions & 2 deletions flask_security/datastore.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
:license: MIT, see LICENSE for more details.
"""

from .utils import get_identity_attributes, string_types
from .utils import get_identity_attributes, string_types, config_value


class Datastore(object):
Expand Down Expand Up @@ -124,7 +124,7 @@ def _prepare_role_modify_args(self, user, role):
return user, role

def _prepare_create_user_args(self, **kwargs):
kwargs.setdefault('active', True)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@eliaperantoni could we simply remove the line and rely on default in user defined datastore?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By having this line here we're able to make users active or not by default but we can also override this setting for some particular users if needed.

kwargs.setdefault('active', config_value('USER_ACTIVE_BY_DEFAULT'))
roles = kwargs.get('roles', [])
for i, role in enumerate(roles):
rn = role.name if isinstance(role, self.role_model) else role
Expand Down