private async Task CheckSession() { if (!File.Exists("Config/hirezapi.json")) { await CreateSession(); } string json = File.ReadAllText("Config/hirezapi.json"); sessionResult = JsonConvert.DeserializeObject <ApiSessionResult>(json); if (sessionResult.sessionTime != null) { DateTime parsedSessionTime = DateTime.Parse(sessionResult.sessionTime, CultureInfo.InvariantCulture); //also check if sessionID is not empty, it is sometimes empty for some reason if ((DateTime.UtcNow - parsedSessionTime).TotalMinutes >= 15 || sessionResult.sessionID == "") { await CreateSession(); } } else { await CreateSession(); } }
public void TerminateApiSession(HttpContext httpContext) { string authToken = httpContext.Request.Headers["AuthToken"].ToString(); ApiSessionResult sessionResult = ApiSessionProcessor .FindByField("authToken", authToken) .SingleOrDefault(); ApiSessionProcessor.Erase(sessionResult.Id); }
public ApiSessionResult CreateApiSession(UserResult userResult, string hashedAuthToken) { ApiSessionParam sessionParam = new ApiSessionParam() { Code = userResult.UserName + $"{System.DateTime.Now.TimeOfDay}", Name = userResult.StatusName, Description = $"This is {userResult.UserName}'s api session. Created on {System.DateTime.Now}", Active = userResult.Active, UserId = userResult.Id, AuthToken = hashedAuthToken }; ApiSessionResult apiSession = ApiSessionProcessor.Create(sessionParam); return(apiSession); }
public string GetAuthToken(HttpContext httpContext) { var userId = httpContext.User.FindFirst (claim => claim.Type == ClaimTypes.NameIdentifier) .Value; byte[] salt = Salt.GenerateSalt(); string authToken = System.Guid.NewGuid().ToString("N"); string hashedAuthToken = Hash.Compute(authToken, salt); hashedAuthToken = TrimToken(hashedAuthToken); UserResult userResult = UserProcessor.FindByField("id", userId).SingleOrDefault(); ApiSessionResult sessionResult = CreateApiSession(userResult, hashedAuthToken); return(sessionResult.AuthToken); }