Ejemplo n.º 1
0
        public AuthRestModelResponse LoginFromFromToken
            (string accessToken, string idToken, string expiresIn, string instanceId = null)
        {
            var result = new AuthRestModelResponse
            {
                Condition    = false,
                Message      = string.Empty,
                InfoResponse = new AuthRestModel()
            };
            var userInfoResult = GetUserInfo(accessToken);

            Console.WriteLine("Info: --  LoginFromFromToken");
            Console.WriteLine($"Info: --  {userInfoResult.IdToken}");

            userInfoResult.IdToken     = idToken;
            userInfoResult.AccessToken = accessToken;
            userInfoResult.TokenExpire = expiresIn;

            var model = new AuthRestModelResponse {
                InfoResponse = userInfoResult, Condition = true
            };

            Console.WriteLine("Info: --  Login - call");
            result = Login(model, instanceId);

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get the user by email not the token
        /// </summary>
        /// <param name="email">Email of the user</param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        public AuthRestModelResponse GetUserInfo(string email)
        {
            var result = new AuthRestModelResponse {
                Condition = false
            };
            var user = _userManager.Users.SingleOrDefault(i => i.Email == email);

            if (user == null)
            {
                return(result);
            }

            result.InfoResponse = new AuthRestModel {
                Email = email
            };
            var dbUser = _userRepository.GetUserByEmail(email, "app", _applicationSetting.CreateConnectionString());

            if (dbUser == null)
            {
                return(result);
            }

            var rolesResponse = _minutzRoleManager.Roles(_userManager, email);
            var tokenResponse = GenerateJwtToken(email, user, rolesResponse.Roles);

            result.InfoResponse.FirstName = dbUser.FirstName;
            result.Code         = 200;
            result.Condition    = true;
            result.InfoResponse = dbUser.ToModel
                                      (user.EmailConfirmed, user.Id, tokenResponse.expires_in, tokenResponse.access_token);
            return(result);
        }
Ejemplo n.º 3
0
        public AuthRestModelResponse GetUserInfo
            (string token)
        {
            var result = new AuthRestModelResponse {
                Condition = false, Message = string.Empty, InfoResponse = new AuthRestModel()
            };
            AuthRestModel authResult;
            var           url           = $"{_applicationSetting.Authority}userinfo";
            bool          requestResult = _cache.TryGetValue(token, out authResult);

            if (!requestResult)
            {
                var httpResult = _httpService.Get(url, token);
                if (!httpResult.condition)
                {
                    _logService.Log(LogLevel.Exception, $"Auth0Repository.GetUserInfo -> there was a issue getting the details from auth0");
                    result.Message = httpResult.result;
                    return(result);
                }
                authResult       = JsonConvert.DeserializeObject <AuthRestModel> (httpResult.result);
                result.Condition = httpResult.condition;
                var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(10));
                _cache.Set(token, authResult, cacheEntryOptions);
            }
            else
            {
                result.Condition = true;
            }
            result.InfoResponse = authResult;
            return(result);
        }
Ejemplo n.º 4
0
        public AuthRestModelResponse LoginFromLoginForm(string username, string password, string instanceId = null)
        {
            var result = new AuthRestModelResponse
            {
                Condition    = false,
                Message      = string.Empty,
                InfoResponse = new AuthRestModel()
            };

            var valid = ValidateStringUsernameAndPassword(username, password);

            if (!valid.Condition)
            {
                Console.WriteLine("Info: -- ValidateStringUsernameAndPassword");
                result.Code    = 404;
                result.Message = valid.Message;
                return(result);
            }

            var tokenCreateResult = _authRepository.CreateToken(username, password);

            if (!tokenCreateResult.Condition)
            {
                Console.WriteLine("Info: -- CreateToken");
                result.Code    = 404;
                result.Message = tokenCreateResult.Message;
                return(result);
            }

            var userInfoResult = _authRepository.GetUserInfo(username);

            if (!userInfoResult.Condition)
            {
                Console.WriteLine("Info: -- GetUserInfo");
                result.Message = userInfoResult.Message;
                result.Code    = 500;
                return(result);
            }

            userInfoResult.InfoResponse.UpdateTokenInfo(tokenCreateResult.AuthTokenResponse);
            Console.WriteLine("Info: -- UpdateTokenInfo");
            Console.WriteLine("Info: -- Login");

            result = Login(userInfoResult, instanceId);
            if (!result.Condition)
            {
                Console.WriteLine("Info: -- Login");
                result.Message = result.Message;
                result.Code    = 500;
                return(result);
            }
            return(result);
        }
Ejemplo n.º 5
0
        public AuthRestModelResponse ResetUserInfo
            (string token)
        {
            var result = new AuthRestModelResponse
            {
                Condition    = false,
                Message      = string.Empty,
                InfoResponse = new AuthRestModel()
            };

            _cache.Remove(token);
            result.InfoResponse = GetUserInfo(token);
            return(result);
        }
Ejemplo n.º 6
0
        public AuthRestModel GetUserInfo
            (string token)
        {
            var result = new AuthRestModelResponse
            {
                Condition    = false,
                Message      = string.Empty,
                InfoResponse = new AuthRestModel()
            };

            if (!_cache.TryGetValue(token, out AuthRestModel userInfo))
            {
                var httpResult = Helper.HttpService.Get($"{_applicationSetting.Authority}userinfo", token);
                userInfo = Newtonsoft.Json.JsonConvert.DeserializeObject <AuthRestModel>(httpResult);
                var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(10));
                _cache.Set(token, userInfo, cacheEntryOptions);
            }

            return(userInfo);
        }
Ejemplo n.º 7
0
        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);
        }