Commit Graph

906 Commits

Author SHA1 Message Date
06dd24bcf9 Project Edit: Node types editing embedded 2017-09-04 16:19:17 +02:00
941ec94313 Node Type Edit: Save node_type description 2017-09-04 16:19:17 +02:00
4b1bb6283e Let Flask know our preferred URL scheme 2017-09-01 16:20:37 +02:00
3a3b3c3269 Revert "Replaced config SCHEME with Flask's own PREFERRED_URL_SCHEME setting."
This reverts commit 8318d4b1f6.
2017-09-01 16:19:58 +02:00
fe64a0c70e Changed organizations endpoint /orgs → /o 2017-09-01 11:39:59 +02:00
314f0b8dbe Quote token when logging
This helps when debugging strange tokens.
2017-09-01 11:21:02 +02:00
8318d4b1f6 Replaced config SCHEME with Flask's own PREFERRED_URL_SCHEME setting.
This prevents us from explicitly passing SCHEME to url_for() calls.

NOTE: this possibly requires an update to your config_local.py
2017-08-31 14:37:35 +02:00
d6dd0d69d0 Fix for missing underscore in _scheme arg
Be more careful next time!
2017-08-31 14:32:39 +02:00
2d3b54b80b Use app config SCHEME to enforce https when doing oauth redirects 2017-08-31 14:22:07 +02:00
7890cd2622 Introducing settings blueprint
Now settings live in a dedicated space, the settings blueprint can be used by Pillar applications, and the templates can be extended or overridden. Moved subscription and email settings to the blender-cloud repository.
2017-08-30 23:10:28 +02:00
62542f0329 Rolled back some flask_login and g.current_user integration
Setting flask_login.current_user ourselves was a bad idea, and messed up
flask_login's internal administration. Our code now just manages
g.current_user in these specific instances, which works fine.
2017-08-30 12:39:46 +02:00
6825b8bf74 Fixed infinite recursion. 2017-08-29 12:31:52 +02:00
bdd603fb17 Using new UserClass instances everywhere:
- No more direct access to g.current_user, unless unavoidable.
  - Using pillar.auth.current_user instead of g.current_user or
    flask_login.current_user.
  - p.a.current_user is never checked against None.
  - p.a.current_user.is_authenticated or is_anonymous is used, and never
    together with a negation (instead of 'not is_anon' use 'is_auth').
  - No more accessing current_user a a dict.
  - No more checks for admin role, use capability check instead.
2017-08-29 11:34:48 +02:00
86e76aaa5f Use UserClass instead of assigning dict to g.current_user 2017-08-29 11:34:48 +02:00
c7c867f1c7 OAuth signin: streamlined instantiation of OAuthSignIn subclasses 2017-08-25 12:35:08 +02:00
a12838032f Introducing exception handling in the application code 2017-08-25 11:47:40 +02:00
6edd0e2f8d Fix for embedded template paths
When edting a custom node type we were building the wrong path, and not passing the project argument to the render_template function.
2017-08-25 10:57:29 +02:00
398bbbc316 Fix up config_testing values to conform with tests 2017-08-25 10:55:35 +02:00
41a82c44c5 Tests for providers callbacks
Also added SERVER_NAME in config_testing and pre-populated the  keys of OAUTH_CREDENTIALS, since the implementation of providers is part of the application.
2017-08-25 10:55:35 +02:00
cecf81a07d Initial tests for OAuthSignIn 2017-08-25 10:55:35 +02:00
45275c3831 Switch to class-based OAuthUserResponse
Instead of returning an arbirary number of items, we provide a standardized and better documented response.
2017-08-25 10:55:35 +02:00
6b3e523036 Remove Flask-OAuthlib and oauth_blender_id from Pillar
We switch completely to a rauth-based approach, allowing multiple providers for authentication.
2017-08-25 10:53:22 +02:00
6e9a539d61 Fix typo 2017-08-25 10:52:52 +02:00
c9b2eb25b2 Add default OAUTH_CREDENTIALS in config 2017-08-25 10:51:45 +02:00
23b856b073 Move Blender ID to extensible OAuth
Also, added support for Google OAuth.
2017-08-25 10:51:45 +02:00
9b9e0488d3 New login page
Exposes all available login providers
2017-08-25 10:51:45 +02:00
c827dc4ed2 Initial work to support multiple OAuth clients 2017-08-25 10:51:45 +02:00
d48a308cc6 Renamed pillar.auth.current_web_user to pillar.auth.current_user
This is an in-between change. In the future, we want to always set
g.current_user so that it's never None (but rather an AnonymousUser
instance). However, there is still some code that assumes that when
g.current_user is not None the user is logged in. This should be
addressed first.
2017-08-24 14:28:18 +02:00
b9ae4396e5 Orgs: show "My Organizations" in the user's menu
This is shown only when the user is member of or administrator for one or
more organizations, otherwise it's hidden.
2017-08-24 14:28:18 +02:00
be12bd7d99 Orgs: allow users to leave an organization 2017-08-24 14:28:18 +02:00
0445c3bd86 Orgs: assign capabilities to org-subscriber role 2017-08-24 14:28:18 +02:00
598b59c0c6 Orgs: gracefully handle 'not enough seats' error 2017-08-24 14:28:18 +02:00
1e1bd83baf Orgs: refresh all members' roles after org changed roles 2017-08-24 14:28:18 +02:00
d41e2bbce4 Orgs: fixed "Create New Organization" button
It now actually creates the new org and shows it.
2017-08-24 14:28:18 +02:00
f1edb901d1 Orgs: allow setting org admin via web interface / PATCH request 2017-08-24 14:28:18 +02:00
08294e2f14 Orgs: allow admins to set seat count and org_roles 2017-08-24 14:28:18 +02:00
1c9f425a40 Orgs: use flask_login.current_user to avoid calling current_user() all the time 2017-08-24 14:28:18 +02:00
4116357447 Orgs: some small fixes, mostly for stability / corner cases 2017-08-24 14:28:18 +02:00
e9cb235640 Added web interface for organizations.
It looks like crap, but it allows you to edit the details and the members.
2017-08-24 14:28:18 +02:00
64eab850c5 Orgs: pillar admins can always edit an organization 2017-08-24 14:28:17 +02:00
c6eebc4eae Orgs: allow setting location field by PATCH 2017-08-24 14:28:17 +02:00
1bd6e07fe2 Orgs: Allow adding individual known users by user ID.
This is used for the selection by user search.
2017-08-24 14:28:17 +02:00
1ad13d048f Some extra type safety checks 2017-08-24 14:28:17 +02:00
cfde720b1d Orgs: PATCH op to batch-add emails as members now strip()s emails
It also refuses to add empty emails.
2017-08-24 14:28:11 +02:00
5d17d892a4 Orgs: Use current_user() in PATCH handler 2017-08-24 14:28:02 +02:00
40172bf8b5 Orgs: Use create-organization capability to control access
This is more explicit and future-proof than checking for admin cap.
2017-08-24 14:27:52 +02:00
72404d0fd9 Handle registration of previously unknown organization members.
When a new user is created, two things happen:
  - before inserting into MongoDB, the organizational roles are given
  - after inserting, the organizations are updated to move the user from
    `unknown_members` to `members`.
2017-08-24 14:26:19 +02:00
b53d485960 Added access control to organizations Eve endpoints 2017-08-24 14:26:19 +02:00
cf51d1a280 Added utility function current_user() that acts like flask_login.current_user
This actually returns an AnonymousUser object, instead of None, when the
user is not logged in.

For compatibility with existing code, this function doesn't set
g.current_user to that AnonymousUser instance. We may decide to do this
later.
2017-08-24 14:26:19 +02:00
efc1890871 Added PATCH support for organizations
With a PATCH request you can now:
  - assign users,
  - remove a user,
  - edit the name, description, and website fields.

Only the organization admin user can do this.
2017-08-24 14:26:19 +02:00