summaryrefslogtreecommitdiffstats
path: root/django/engagementmanager/service/user_service.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/engagementmanager/service/user_service.py')
-rwxr-xr-xdjango/engagementmanager/service/user_service.py121
1 files changed, 121 insertions, 0 deletions
diff --git a/django/engagementmanager/service/user_service.py b/django/engagementmanager/service/user_service.py
new file mode 100755
index 0000000..8d6317e
--- /dev/null
+++ b/django/engagementmanager/service/user_service.py
@@ -0,0 +1,121 @@
+#
+# ============LICENSE_START==========================================
+# org.onap.vvp/engagementmgr
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the “License”);
+# you may not use this software except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ============LICENSE_END============================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+from django.contrib.auth import get_user_model
+from sshpubkeys import SSHKey
+
+from engagementmanager.apps import bus_service
+from engagementmanager.bus.messages.activity_event_message import ActivityEventMessage
+from engagementmanager.models import IceUserProfile, Role, VF
+from engagementmanager.serializers import SuperThinIceUserProfileModelSerializerForSignals
+from engagementmanager.service.base_service import BaseSvc
+from engagementmanager.utils.cryptography import CryptographyText
+from engagementmanager.utils.activities_data import SSHKeyAddedActivityData
+from engagementmanager.utils.vvp_exceptions import VvpBadRequest
+from engagementmanager.utils.request_data_mgr import request_data_mgr
+from engagementmanager.views_helper import checkAndModifyIfSSHNextStepExist, \
+ getFirstEngByUser, addUsersToEngTeam
+from engagementmanager.vm_integration import vm_client
+
+
+class UserService(BaseSvc):
+
+ def validate_ssh_key(self, sshkey):
+ ssh = SSHKey(sshkey)
+
+ try:
+ ssh.parse()
+ except Exception as e:
+ msg = """ssh provided by the user is invalid, type of exception: """ + \
+ str(e)
+ self.logger.error(msg)
+ msg = "Updating SSH Key failed due to invalid key."
+ raise VvpBadRequest(msg)
+
+ # remove comment from ssh key
+ # ssh.comment returns comment attached to key
+ if ssh.comment != None:
+ striped_key = sshkey.replace(ssh.comment, '').strip()
+ else:
+ striped_key = sshkey.strip()
+ try:
+ user_with_ssh = IceUserProfile.objects.get(
+ ssh_public_key__startswith=striped_key)
+ except IceUserProfile.DoesNotExist:
+ return True
+ except Exception as e:
+ self.logger.error(
+ "Exception thrown while looking for ssh - %s.", e)
+ msg = "Updating SSH Key failed."
+ raise Exception(msg)
+ else:
+ self.logger.debug(
+ "SSH key already taken by another user - uuid: %s", user_with_ssh.uuid)
+ msg = "Updating SSH Key failed due to invalid key."
+ raise VvpBadRequest(msg)
+
+ def setSSH(self, user, ssh, action):
+ user.ssh_public_key = ssh
+ checkAndModifyIfSSHNextStepExist(user)
+ eng = getFirstEngByUser(user)
+
+ activity_data = SSHKeyAddedActivityData(action, eng, user)
+ bus_service.send_message(ActivityEventMessage(activity_data))
+
+ def get_el_list(self):
+ el_role = Role.objects.get(name='el')
+ engagement_leads_users = IceUserProfile.objects.filter(role=el_role)
+ return SuperThinIceUserProfileModelSerializerForSignals(engagement_leads_users, many=True).data
+
+ def get_user_by_email(self, email):
+ UserModel = get_user_model()
+ try:
+ user = UserModel._default_manager.get(email=email)
+ except UserModel.DoesNotExist:
+ return None
+ return user
+
+ def addUserToEngAndFireProvisionVfSig(self, user_profile, inviteObj):
+ addUsersToEngTeam(inviteObj.engagement_uuid, [user_profile])
+ vfObj = VF.objects.get(engagement__uuid=inviteObj.engagement_uuid)
+ vm_client.fire_event_in_bg('send_provision_new_vf_event', vfObj)
+
+ def get_user_rgwa_secret(self):
+ secret = request_data_mgr.get_user().rgwa_secret_key
+ decoded_key = CryptographyText.decrypt(secret)
+ return decoded_key