Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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));
     }
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 public bool IsSessionValid(ViewModels.SessionVM vm, string token)
 {
     return(true);
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }