示例#1
0
        public string GetInstancePassword
            (string instance)
        {
            var instanceObject = _instanceRepository.GetByUsername(instance, CreateConnectionString());

            return(instanceObject.Instance.Password);
        }
        private AuthRestModelResponse Login
            (AuthRestModelResponse userInfoResult, string instanceId)
        {
            var result = new AuthRestModelResponse
            {
                Condition    = false,
                Message      = string.Empty,
                InfoResponse = new AuthRestModel()
            };

            Console.WriteLine("Info: -- Login");
            Console.WriteLine("Info: -- Calling: _userDatabaseRepository.MinutzPersonCheckIfUserExistsByEmail");
            _logService.Log(LogLevel.Info, $"Info: -- Calling: _userDatabaseRepository.MinutzPersonCheckIfUserExistsByEmail");
            var userExistsByEmail =
                _userDatabaseRepository.MinutzPersonCheckIfUserExistsByEmail(userInfoResult.InfoResponse.Email,
                                                                             _applicationSetting.CreateConnectionString());

            if (!userExistsByEmail.Condition)
            {
                Console.WriteLine("Info: -- SearchUserByEmail");
                var userSearchResult = _authRepository.SearchUserByEmail(userInfoResult.InfoResponse.Email);
                if (userSearchResult.Condition)
                {
                    var newInsertUser = new AuthRestModel
                    {
                        Email      = userSearchResult.User.email,
                        Name       = userSearchResult.User.name,
                        Picture    = userSearchResult.User.picture,
                        Sub        = userSearchResult.User.user_id,
                        InstanceId = userSearchResult.User.user_metadata.instance,
                        Role       = userSearchResult.User.user_metadata.role
                    };
                    Console.WriteLine($"Info: -- SearchUserByEmail {userSearchResult.User.user_metadata}");
                    if (userSearchResult.User.user_metadata != null)
                    {
                        newInsertUser.Role = !string.IsNullOrEmpty(userSearchResult.User.user_metadata.role)
                            ? userSearchResult.User.user_metadata.role
                            : RoleTypes.Guest;
                    }

                    Console.WriteLine($"Info: -- CreateNewUser");
                    var createUserResult = _userDatabaseRepository.CreateNewUser
                                               (newInsertUser, _applicationSetting.CreateConnectionString());

                    if (!createUserResult.Condition)
                    {
                        _logService.Log(LogLevel.Error, $"Login => CreateUser  => error: {createUserResult.Message}.");
                        Console.WriteLine($"Info: -- Login => CreateUser  => error: {createUserResult.Message}.");
                        result.Message = createUserResult.Message;
                        return(result);
                    }

                    userExistsByEmail =
                        _userDatabaseRepository.MinutzPersonCheckIfUserExistsByEmail(userInfoResult.InfoResponse.Email,
                                                                                     _applicationSetting.CreateConnectionString());
                }
            }

            if (string.IsNullOrEmpty(userExistsByEmail.Person.Related))
            {
                if (string.IsNullOrEmpty(userExistsByEmail.Person.InstanceId))
                {
                    if (string.IsNullOrEmpty(instanceId))
                    {
                        Console.WriteLine(
                            $"Info: -- userInfoResult.InfoResponse.ToInstanceString() {userInfoResult.InfoResponse.ToInstanceString()}");
                        instanceId = userInfoResult.InfoResponse.ToInstanceString();
                    }
                }
                else
                {
                    Console.WriteLine(
                        $"Info: -- userExistsByEmail.Person.InstanceId {userExistsByEmail.Person.InstanceId}");
                    instanceId = userExistsByEmail.Person.InstanceId;
                }
            }
            else
            {
                var relatedInstances = userExistsByEmail.Person.RelatedItems();
                instanceId = relatedInstances.FirstOrDefault().instanceId;
            }

            var instanceResponse =
                _instanceRepository.GetByUsername(instanceId, _applicationSetting.CreateConnectionString());

            if (!instanceResponse.Condition)
            {
                Console.WriteLine($"Info: -- CreateNewSchema");
                userInfoResult.InfoResponse.Role    = RoleTypes.User;
                userInfoResult.InfoResponse.Related = string.Empty;
                _userDatabaseRepository.CreateNewSchema(userInfoResult.InfoResponse, _applicationSetting.Schema,
                                                        _applicationSetting.CreateConnectionString());
                Console.WriteLine($"Info: -- _instanceRepository.GetByUsername");
                instanceResponse =
                    _instanceRepository.GetByUsername(instanceId, _applicationSetting.CreateConnectionString());
            }

            Console.WriteLine($"Info: -- UpdateFromInstance");
            userInfoResult.InfoResponse.UpdateFromInstance(userExistsByEmail.Person, instanceResponse.Instance);
            result.InfoResponse = userInfoResult.InfoResponse;
            result.Condition    = true;
            return(result);
        }
        public AuthenticationHelper(string token,
                                    IAuthenticationService _authenticationService,
                                    IInstanceRepository instanceRepository,
                                    IApplicationSetting applicationSetting,
                                    IUserValidationService userValidationService)
        {
            var userInfo = _authenticationService.GetUserInfo(token);

            this.UserInfo = userValidationService.GetUser(userInfo.Sub);

            if (string.IsNullOrEmpty(this.UserInfo.Related))// this will use the defasult user instance id, this is if the user is a owner
            {
                this.Instance = instanceRepository.GetByUsername(this.UserInfo.InstanceId,
                                                                 applicationSetting.CreateConnectionString(
                                                                     applicationSetting.Server,
                                                                     applicationSetting.Catalogue,
                                                                     applicationSetting.Username,
                                                                     applicationSetting.Password)).Instance;
            }
            else
            {
                if (this.UserInfo.Related.Contains("&"))
                {
                    string relatedstring = this.UserInfo.Related;
                    if (this.UserInfo.Related.Contains('|'))
                    {
                        relatedstring = this.UserInfo.Related.TupleSplit().value;
                    }

                    (string instanceId, string meetingId)relatedInstance = relatedstring.SplitToList("&", ";").FirstOrDefault(); // This is to be updated to allow multiple
                    this.Instance = instanceRepository.GetByUsername(relatedInstance.instanceId,
                                                                     applicationSetting.CreateConnectionString(
                                                                         applicationSetting.Server,
                                                                         applicationSetting.Catalogue,
                                                                         applicationSetting.Username,
                                                                         applicationSetting.Password)).Instance;
                }
                else
                {
                    this.Instance = instanceRepository.GetByUsername(this.UserInfo.Name,
                                                                     applicationSetting.CreateConnectionString(
                                                                         applicationSetting.Server,
                                                                         applicationSetting.Catalogue,
                                                                         applicationSetting.Username,
                                                                         applicationSetting.Password)).Instance;
                }
            }
            if (this.Instance == null)
            {
                this.ConnectionString = applicationSetting.CreateConnectionString(
                    applicationSetting.Server,
                    applicationSetting.Catalogue,
                    applicationSetting.Username,
                    applicationSetting.Password);
            }
            else
            {
                this.ConnectionString = applicationSetting.CreateConnectionString(
                    applicationSetting.Server,
                    applicationSetting.Catalogue,
                    this.Instance.Username,
                    this.Instance.Password);
            }
        }