Example #1
0
        public static LogoutResult Logout(NameValueCollection Query)
        {
            try
            {
                #region Получаем параметры запроса

                string _id = Query.Get("user_id");

                string _token = Query.Get("access_token");

                #endregion

                #region Проверка на правильность id и token

                Status _status = Validator.UserIdOrToken(_id, _token);

                if (_status != Status.SUCCESSFULLY_COMPLETED)
                {
                    return new LogoutResult(_status);
                }

                #endregion

                #region Подключение к базе данных

                Sql _sql;

                try
                {
                    _sql = new Sql();

                    if (!_sql.Connected)
                    {
                        return new LogoutResult(Status.ERROR_CONNECTION_DATABASE);
                    }
                }
                catch
                {
                    return new LogoutResult(Status.ERROR_CONNECTION_DATABASE);
                }

                #endregion

                #region Преобразуем id в число

                long _uid = 0;

                try
                {
                    _uid = Convert.ToInt64(_id);
                }
                catch
                {
                    return new LogoutResult(Status.INCORRECT_USERID);
                }

                #endregion

                #region Удаляем токен

                try
                {
                    if (_sql.IsToken(_uid, _token))
                    {
                        if (_sql.RemoveToken(_uid))
                        {
                            return new LogoutResult(Status.SUCCESSFULLY_COMPLETED);
                        }
                        else
                        {
                            return new LogoutResult(Status.ERROR);
                        }
                    }
                    else
                    {
                        return new LogoutResult(Status.ACCESS_DENIED);
                    }
                }
                catch
                {
                    return new LogoutResult(Status.ERROR_QUERY_DATABASE);
                }

                #endregion
            }
            catch
            {
                return new LogoutResult(Status.EXCEPTION);
            }
        }
Example #2
0
        public static LoginResult Login(NameValueCollection Query)
        {
            try
            {
                #region Получаем параметры запроса

                string _email = Query.Get("email");

                string _passw = Query.Get("password");

                #endregion

                #region Проверка на правильность email и пароля

                Status _status = Validator.EmailOrPassword(_email, _passw);

                if (_status != Status.SUCCESSFULLY_COMPLETED)
                {
                    return new LoginResult(_status);
                }

                #endregion

                #region Подключение к базе данных

                Sql _sql;

                try
                {
                    _sql = new Sql();

                    if (!_sql.Connected)
                    {
                        return new LoginResult(Status.ERROR_CONNECTION_DATABASE);
                    }
                }
                catch
                {
                    return new LoginResult(Status.ERROR_CONNECTION_DATABASE);
                }

                #endregion

                #region Получаем md5 хеш пароля

                string _hash = Hash.Md5(_passw);

                #endregion

                #region Проверяем на существование пользователя

                long _id;

                try
                {
                    _id = _sql.GetUser(_email, _hash);

                    if (_id == -1)
                    {
                        return new LoginResult(Status.USER_NOT_FOUND);
                    }
                }
                catch
                {
                    return new LoginResult(Status.ERROR_QUERY_DATABASE);
                }

                #endregion

                #region Удаляем токен

                try
                {
                    if (_sql.IsToken(_id))
                    {
                        if (!_sql.RemoveToken(_id))
                        {
                            return new LoginResult(Status.ERROR_RETOKEN);
                        }
                    }
                }
                catch
                {
                    return new LoginResult(Status.ERROR_QUERY_DATABASE);
                }

                #endregion

                #region Пишем новый токен

                try
                {
                    string _token = Hash.Token(_id);

                    if (_sql.SetToken(_id, _token))
                    {
                        return new LoginResult(Status.SUCCESSFULLY_COMPLETED, new Dictionary<string, object>()
                    {
                        {
                            "user_id", _id
                        },
                        {
                            "access_token", _token
                        }
                    });
                    }
                    else
                    {
                        return new LoginResult(Status.ERROR);
                    }
                }
                catch
                {
                    return new LoginResult(Status.ERROR_QUERY_DATABASE);
                }

                #endregion
            }
            catch
            {
                return new LoginResult(Status.EXCEPTION);
            }
        }