Exemplo n.º 1
0
    async def leave_workspace(self, request, context):
        try:
            header_data = dict(context.invocation_metadata())
            introspect_token = KeyCloakUtils.introspect_token(
                header_data['access_token'])
            client_id = introspect_token['sub']

            user_info = User().get(client_id)
            lst_joined_group = GroupChat().get_joined(client_id)
            if len(lst_joined_group) > 0:

                for group in lst_joined_group:
                    request_leave_group = group_pb2.LeaveGroupRequest(
                        leave_member=group_pb2.MemberInfo(
                            id=client_id,
                            display_name=user_info.display_name,
                            workspace_domain=get_owner_workspace_domain()),
                        leave_member_by=group_pb2.MemberInfo(
                            id=client_id,
                            display_name=user_info.display_name,
                            workspace_domain=get_owner_workspace_domain()),
                        group_id=group.GroupChat.id)
                    await GroupController().leave_group(
                        request_leave_group, context)

            user_info.delete()
            KeyCloakUtils.delete_user(client_id)

            return workspace_pb2.BaseResponse()

        except Exception as e:
            logger.error(e)
            if not e.args or e.args[0] not in Message.msg_dict:
                errors = [
                    Message.get_error_object(Message.LEAVE_WORKSPACE_FAILED)
                ]
            else:
                errors = [Message.get_error_object(e.args[0])]
            context.set_details(
                json.dumps(errors, default=lambda x: x.__dict__))
            context.set_code(grpc.StatusCode.INTERNAL)
Exemplo n.º 2
0
 async def destroy(request: Request, uid: str):
     user = User.get_or_none(id=uid)
     if user is None:
         return json({'Erro': 'Usuário não encontrado'}, status=404)
     User.delete().where(User.id == user.id).execute()
     return json(None, status=204)