public async Task <DateTime?> RenewSession(System.Data.IDbConnection conn, ViewModels.SessionVM session, int?timeoutInSeconds = null) { if (session == null) { return(null); } timeoutInSeconds = timeoutInSeconds ?? Constants.Constants.SESSION_TIMEOUT_IN_SECONDS; try { string logoutSql = @" Update sessions SET next_login_timeout = @next_login_timeout, modified_on = UTC_TIMESTAMP() Where id = @user_id; Select ROW_COUNT(); "; var sessionTimeOut = DateTime.UtcNow.AddSeconds(timeoutInSeconds.Value); var parameters = new System.Collections.Generic.Dictionary <string, object>(); parameters.Add("@user_id", session.UserId); parameters.Add("@sessionid", session.Id); parameters.Add("@next_login_timeout", sessionTimeOut); int result = await DB.DBUtility.GetScalar <int>(conn, logoutSql, parameters); if (result == 1) { return(sessionTimeOut); } } finally { } return(null); }
public async Task <DateTime?> RenewSession(Interfaces.IConnectionUtility connectionUtility, ViewModels.SessionVM session, int?timeoutInSeconds = null) { using (var connection = connectionUtility.GetConnection()) { return(await RenewSession(connection, session, timeoutInSeconds)); } }
public async Task <bool> ChangePassword(Interfaces.IConnectionUtility connectionUtility, ViewModels.SessionVM session, string newPassword) { if (session == null) { return(false); } using (var conn = connectionUtility.GetConnection()) { try { var sessionValidResult = await IsSessionValid(conn, session.SessionToken, session.UserId); if (sessionValidResult.IsValid) { string logoutSql = @" Update users SET login_password = aes_encrypt(@password, @token), modified_on = UTC_TIMESTAMP() Where id = @user_id; Select ROW_COUNT(); "; var parameters = new System.Collections.Generic.Dictionary <string, object>(); parameters.Add("@user_id", session.UserId); parameters.Add("@sessionid", session.Id); int result = await DB.DBUtility.GetScalar <int>(conn, logoutSql, parameters); if (result > 0) { return(true); } } } finally { } } return(false); }
public bool IsSessionValid(ViewModels.SessionVM vm, string token) { return(true); }
public async Task <bool> IsSessionValid(System.Data.IDbConnection connection, ViewModels.SessionVM sessionVM) { if (sessionVM == null || sessionVM.NextLoginTimeout >= DateTime.UtcNow) { return(false); } var sessionModel = _sessionCacheProvider.GetCachedSession(sessionVM.SessionToken); if (sessionModel == null) { Providers.UserProvider provider = new Providers.UserProvider(); DBModels.SessionsEntity session = await provider.GetSessionModel(connection, sessionVM.SessionToken); if (session == null) { return(false); } sessionModel = Mappers.ObjectMapper.Instance.Mapper.Map <ViewModels.SessionVM>(session); } if (sessionModel.Equals(sessionVM) && sessionModel.NextLoginTimeout < DateTime.UtcNow) { return(true); } return(false); }
public async Task <bool> ValidateAndRenewSession(DB.StudentDBConnectionUtility connectionUtility, ViewModels.SessionVM sessionVM) { using (var connection = connectionUtility.GetConnection()) { var result = await IsSessionValid(connection, sessionVM); if (result) { Providers.UserProvider provider = new Providers.UserProvider(); DateTime?dt = await provider.RenewSession(connection, sessionVM, Constants.Constants.SESSION_TIMEOUT_IN_SECONDS); if (dt.HasValue) { sessionVM.LastActivityTime = DateTime.UtcNow; sessionVM.NextLoginTimeout = dt.Value; _sessionCacheProvider.AddSessionModel(sessionVM); return(true); } } } _sessionCacheProvider.RemoveSessionModel(sessionVM.SessionToken); return(false); }