Ejemplo n.º 1
0
        public static bool IsAuthorized(Request _request, out TGUser _user)
        {
            OpenFormGraphManager manager = new OpenFormGraphManager();

            string username  = _request.Headers["Username"].First();
            string authToken = _request.Headers["AuthorizationToken"].First();

            TGUser user = manager.GetUser(username);

            if (user != null)
            {
                TGUserAuthorization userAuth = manager.GetUserAuthorization(user.Guid, authToken);

                if (userAuth != null &&
                    !userAuth.IsExpired())
                {
                    _user = user;

                    return(true);
                }
            }

            _user = null;
            return(false);
        }
Ejemplo n.º 2
0
        public static bool IsAuthorized(Request _request, out User _user)
        {
            HydrantWikiManager hwManager = new HydrantWikiManager();

            string username  = _request.Headers["Username"].First();
            string authToken = _request.Headers["AuthorizationToken"].First();

            User user = hwManager.GetUser(UserSources.HydrantWiki, username);

            if (user != null)
            {
                TGUserAuthorization userAuth = hwManager.GetUserAuthorization(user.Guid, authToken);

                if (userAuth != null &&
                    !userAuth.IsExpired())
                {
                    _user = user;

                    return(true);
                }
            }

            _user = null;
            return(false);
        }
Ejemplo n.º 3
0
        public string GetAuthorizationToken(Guid _userGuid, string _deviceType)
        {
            TGUserAuthorization userAuthorization = TGUserAuthorization.GetNew(_userGuid, _deviceType);

            Persist(userAuthorization);

            return(userAuthorization.AuthorizationToken);
        }
Ejemplo n.º 4
0
        public static string Authorize(string _username, string _password, out User _user)
        {
            HydrantWikiManager hwManager = new HydrantWikiManager();

            _user = hwManager.GetUser(UserSources.HydrantWiki, _username);

            if (_user != null)
            {
                if (_user.IsVerified)
                {
                    if (_user.Active)
                    {
                        if (hwManager.ValidateUser(_user, _password))
                        {
                            TGUserAuthorization authorization =
                                TGUserAuthorization.GetNew(_user.Guid, "unknown");
                            hwManager.Persist(authorization);

                            //Done with a string builder to avoid the json braces that confuse string.format
                            StringBuilder sb = new StringBuilder();
                            sb.Append("{ \"Result\":\"Success\", \"AuthorizationToken\":\"");
                            sb.Append(authorization.AuthorizationToken);
                            sb.Append("\", \"DisplayName\":\"");
                            sb.Append(_user.DisplayName);
                            sb.Append("\", \"UserName\":\"");
                            sb.Append(_user.Username);
                            sb.Append("\" }");

                            return(sb.ToString());
                        }

                        //Bad password or username
                        hwManager.LogWarning(Guid.Empty, "User not found");
                        _user = null;
                        return(@"{ ""Result"":""BadUserOrPassword"" }");
                    }

                    //user not active
                    //Todo - Log Something
                    hwManager.LogWarning(_user.Guid, "User Not Active");
                    _user = null;
                    return(@"{ ""Result"":""NotActive"" }");
                }

                //User not verified
                //Todo - Log Something
                hwManager.LogWarning(_user.Guid, "User not verified");
                _user = null;
                return(@"{ ""Result"":""NotVerified"" }");
            }

            //User not found
            hwManager.LogWarning(Guid.Empty, "User not found");
            _user = null;
            return(@"{ ""Result"":""BadUserOrPassword"" }");
        }
Ejemplo n.º 5
0
 public static void RememberLogin(HttpResponse _response,
                                  TGUserAuthorization _userAuthorization,
                                  string _domainName)
 {
     if (_response != null)
     {
         _response.Cookies["UserSettings"]["UserGuid"]           = _userAuthorization.ParentGuid.ToString();
         _response.Cookies["UserSettings"]["AuthorizationToken"] = _userAuthorization.AuthorizationToken;
         _response.Cookies["UserSettings"].Expires = DateTime.Now.AddDays(30);
         _response.Cookies["UserSettings"].Domain  = _domainName;
     }
 }
Ejemplo n.º 6
0
        public static TGUser LoginFromAuthorization(IServerDataManager _sdm,
                                                    Guid _userGuid,
                                                    string _authorizationToken)
        {
            TGUser user = _sdm.GetUser(_userGuid);

            if (user != null)
            {
                if (user.Active)
                {
                    if (user.IsVerified)
                    {
                        TGUserAuthorization userAuthorization =
                            _sdm.GetUserAuthorization(_userGuid, _authorizationToken);

                        if (userAuthorization != null)
                        {
                            if (userAuthorization.ValidateAuthorizationToken(_authorizationToken))
                            {
                                _sdm.Persist(userAuthorization);

                                return(user);
                            }

                            //Passwords don't match or they were not supplied.
                            _sdm.LogWarning(_userGuid, "Passwords don't match or they were not supplied.");
                        }
                        else
                        {
                            _sdm.LogWarning(_userGuid, "User authorization not found.");
                        }
                    }
                    else
                    {
                        //User isn't verified
                        _sdm.LogWarning(_userGuid, "User isn't verified.");
                    }
                }
                else
                {
                    //User isn't active.
                    _sdm.LogWarning(_userGuid, "User isn't active.");
                }
            }
            else
            {
                //User not found
                _sdm.LogWarning(_userGuid, "User not found.");
            }

            return(null);
        }
Ejemplo n.º 7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="_username"></param>
        /// <param name="_authorizationToken"></param>
        /// <param name="_user"></param>
        /// <returns></returns>
        public bool ValidateUser(string _username, string _authorizationToken, out TGUser _user)
        {
            _user = GetUser(_username);

            if (_user != null)
            {
                TGUserAuthorization userAuthorization = GetUserAuthorization(_user.Guid, _authorizationToken);

                if (userAuthorization != null)
                {
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 8
0
        public static BaseResponse Authorize(Objects.AuthObject _auth, out User _user)
        {
            AuthorizationResponse authResponse = new AuthorizationResponse {
                Success = false
            };

            if (_auth == null)
            {
                _user = null;
                authResponse.Message = "Bad Request";
                return(authResponse);
            }

            HydrantWikiManager hwManager = new HydrantWikiManager();

            _user = hwManager.GetUserByEmail(UserSources.HydrantWiki, _auth.Email);

            if (_user != null)
            {
                if (_user.IsVerified)
                {
                    if (_user.Active)
                    {
                        DateTime now        = DateTime.UtcNow;
                        DateTime tenMinAgo  = now.AddMinutes(-10);
                        int      count10Min = hwManager.GetAuthenticationFailureCount(_user.Guid, tenMinAgo);
                        DateTime oneDayAgo  = now.AddHours(-24);
                        int      count1Day  = hwManager.GetAuthenticationFailureCount(_user.Guid, oneDayAgo);


                        if (hwManager.ValidateUser(_user, _auth.Password))
                        {
                            TGUserAuthorization authorization =
                                TGUserAuthorization.GetNew(_user.Guid, "unknown");
                            hwManager.Persist(authorization);

                            var user = new HydrantWiki.Mobile.Api.Objects.User();
                            user.AuthorizationToken = authorization.AuthorizationToken;
                            user.DisplayName        = _user.DisplayName;
                            user.Username           = _user.Username;
                            user.UserType           = Enum.GetName(typeof(UserTypes), _user.UserType);

                            authResponse.Success = true;
                            authResponse.User    = user;
                            authResponse.Message = "";

                            hwManager.LogUserToInstall(_auth.InstallId, user.Username);

                            hwManager.LogInfo(_user.Guid, "User Logged In");

                            return(authResponse);
                        }

                        //Record failure to test if this is an attack.
                        hwManager.RecordAuthenticationFailure(_user.Guid);

                        //Bad password or username
                        hwManager.LogWarning(_user.Guid, "Bad user or password");
                        authResponse.Message = "Bad user or password";

                        return(authResponse);
                    }

                    //user not active
                    //Todo - Log Something
                    hwManager.LogWarning(_user.Guid, "User Not Active");
                    authResponse.Message = "User not active";
                    return(authResponse);
                }

                //User not verified
                //Todo - Log Something
                hwManager.LogWarning(_user.Guid, "User not verified");
                authResponse.Message = "User not verified";
                return(authResponse);
            }

            //User not found
            hwManager.LogWarning(Guid.Empty, "User not found");
            authResponse.Message = "User not found";
            return(authResponse);
        }
Ejemplo n.º 9
0
        public static string Authorize(string _username, string _password, out TGUser _user)
        {
            LoginResult          result  = new LoginResult();
            OpenFormGraphManager manager = new OpenFormGraphManager();

            _user = manager.GetUser(_username);

            if (_user != null)
            {
                if (_user.IsVerified)
                {
                    if (_user.Active)
                    {
                        if (manager.ValidateUser(_user, _password))
                        {
                            TGUserAuthorization authorization =
                                TGUserAuthorization.GetNew(_user.Guid, "unknown");
                            manager.Persist(authorization);

                            result.Result      = "Success";
                            result.AuthToken   = authorization.AuthorizationToken;
                            result.DisplayName = _user.DisplayName;
                            result.Username    = _user.Username;
                        }

                        TGEula eula = manager.GetLatestEula();
                        if (eula != null)
                        {
                            TGEulaAgreement agreement = manager.GetEulaAgreement(_user.Guid, eula.Guid);

                            if (agreement == null)
                            {
                                result.NeedsEula = "True";
                                result.EulaGuid  = eula.Guid.ToString();
                                result.EulaText  = eula.Text;

                                _user.EulaAccepted = false;
                                manager.Persist(_user);
                            }
                            else
                            {
                                result.NeedsEula = "False";
                            }
                        }
                        else
                        {
                            //Bad password or username
                            manager.LogWarning(Guid.Empty, "User not found");
                            _user = null;

                            result.Result = "BadUserOrPassword";
                        }
                    }
                    else
                    {
                        //user not active
                        //Todo - Log Something
                        manager.LogWarning(_user.Guid, "User Not Active");
                        _user = null;

                        result.Result = "NotActive";
                    }
                }
                else
                {
                    //User not verified
                    //Todo - Log Something
                    manager.LogWarning(_user.Guid, "User not verified");
                    _user = null;

                    result.Result = "NotVerified";
                }
            }
            else
            {
                //User not found
                manager.LogWarning(Guid.Empty, "User not found");

                result.Result = "BadUserOrPassword";
            }

            return(JsonConvert.SerializeObject(result));
        }
Ejemplo n.º 10
0
        public void Persist(TGUserAuthorization _tgUserAuthorization)
        {
            TGUserAuthorizationDAO dao = new TGUserAuthorizationDAO(MongoDB);

            dao.Persist(_tgUserAuthorization);
        }