mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-24 00:07:02 -04:00
[WIP] Add call to api to update invitation to accepted.
When flow for invited user is complete, that is when user has been added to service, update invitation to accepted
This commit is contained in:
@@ -12,7 +12,10 @@ from app.main.dao import services_dao, users_dao
|
||||
from app.main.forms import AddServiceForm
|
||||
from app.notify_client.models import InvitedUser
|
||||
|
||||
from app import user_api_client
|
||||
from app import (
|
||||
invite_api_client,
|
||||
user_api_client
|
||||
)
|
||||
|
||||
|
||||
@main.route("/add-service", methods=['GET', 'POST'])
|
||||
@@ -25,7 +28,9 @@ def add_service():
|
||||
# if invited user add to service and redirect to dashboard
|
||||
user = users_dao.get_user_by_id(session['user_id'])
|
||||
service_id = invited_user['service']
|
||||
user_api_client.add_user_to_service(service_id, user.id, invitation)
|
||||
user_api_client.add_user_to_service(service_id, user.id, invitation.permissions)
|
||||
invite_api_client.accept_invite(service_id, invitation.id)
|
||||
|
||||
session.pop('invited_user', None)
|
||||
return redirect(url_for('main.service_dashboard', service_id=service_id))
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
from flask import (
|
||||
redirect,
|
||||
url_for,
|
||||
session
|
||||
session,
|
||||
abort
|
||||
)
|
||||
|
||||
from notifications_python_client.errors import HTTPError
|
||||
|
||||
from app.main import main
|
||||
from app import (
|
||||
invite_api_client,
|
||||
@@ -14,14 +17,23 @@ from app import (
|
||||
@main.route("/invitation/<token>")
|
||||
def accept_invite(token):
|
||||
|
||||
invited_user = invite_api_client.accept_invite(token)
|
||||
existing_user = user_api_client.get_user_by_email(invited_user.email_address)
|
||||
try:
|
||||
|
||||
if existing_user:
|
||||
user_api_client.add_user_to_service(invited_user.service,
|
||||
existing_user.id,
|
||||
invited_user)
|
||||
return redirect(url_for('main.service_dashboard', service_id=invited_user.service))
|
||||
else:
|
||||
session['invited_user'] = invited_user.serialize()
|
||||
return redirect(url_for('main.register_from_invite'))
|
||||
invited_user = invite_api_client.check_token(token)
|
||||
existing_user = user_api_client.get_user_by_email(invited_user.email_address)
|
||||
|
||||
if existing_user:
|
||||
user_api_client.add_user_to_service(invited_user.service,
|
||||
existing_user.id,
|
||||
invited_user.permissions)
|
||||
invite_api_client.accept_invite(invited_user.service, invited_user.id)
|
||||
return redirect(url_for('main.service_dashboard', service_id=invited_user.service))
|
||||
else:
|
||||
session['invited_user'] = invited_user.serialize()
|
||||
return redirect(url_for('main.register_from_invite'))
|
||||
|
||||
except HTTPError as e:
|
||||
if e.status_code == 404:
|
||||
abort(404)
|
||||
else:
|
||||
raise e
|
||||
|
||||
@@ -31,7 +31,7 @@ class InviteApiClient(BaseAPIClient):
|
||||
invited_users = self._get_invited_users(invites)
|
||||
return invited_users
|
||||
|
||||
def accept_invite(self, token):
|
||||
def check_token(self, token):
|
||||
resp = self.get(url='/invite/{}'.format(token))
|
||||
return InvitedUser(**resp['data'])
|
||||
|
||||
@@ -40,6 +40,11 @@ class InviteApiClient(BaseAPIClient):
|
||||
self.post(url='/service/{0}/invite/{1}'.format(service_id, invited_user_id),
|
||||
data=data)
|
||||
|
||||
def accept_invite(self, service_id, invited_user_id):
|
||||
data = {'status': 'accepted'}
|
||||
self.post(url='/service/{0}/invite/{1}'.format(service_id, invited_user_id),
|
||||
data=data)
|
||||
|
||||
def _get_invited_users(self, invites):
|
||||
invited_users = []
|
||||
for invite in invites:
|
||||
|
||||
@@ -94,9 +94,9 @@ class UserApiClient(BaseAPIClient):
|
||||
resp = self.get(endpoint)
|
||||
return [User(data) for data in resp['data']]
|
||||
|
||||
def add_user_to_service(self, service_id, user_id, invited_user):
|
||||
def add_user_to_service(self, service_id, user_id, permissions):
|
||||
endpoint = '/service/{}/users/{}'.format(service_id, user_id)
|
||||
resp = self.post(endpoint, data=invited_user.serialize(permissions_as_string=True))
|
||||
resp = self.post(endpoint, data={'permissions': permissions})
|
||||
return User(resp['data'], max_failed_login_count=self.max_failed_login_count)
|
||||
|
||||
def set_user_permissions(self, user_id, service_id, permissions):
|
||||
|
||||
Reference in New Issue
Block a user