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); }
/// <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); }
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); }
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); }
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); }
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); }
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); }