git.fiddlerwoaroof.com
Raw Blame History
#include <string>
#include <iostream>

#include "validator.h"

namespace
{
    class impl : public validator_ifc {
        private:
            directory_p directory_;
            user_token_supplier_p user_token_supplier_;
        public:
        impl(const directory_p &directory, const user_token_supplier_p user_token_supplier) :
            directory_(directory),
            user_token_supplier_(user_token_supplier) {}
        bool validate (const std::string &user_name,
                              const std::string &token)
        {
            user_p found_user = directory_->find_user (user_name);

            if (!found_user) {
                return false;
            }

            std::string user_token = user_token_supplier_->token (found_user);
            return user_token == token;
        }
    };
}

validator create_validator(const directory_p &directory, const user_token_supplier_p &user_token_supplier) {
    std::shared_ptr<validator_ifc> delegate(new impl(directory, user_token_supplier));
    return validator(delegate);
}

/*
bool old_validator::validate (const std::string &user_name,
                              const std::string &token)
{
    user_p found_user = directory_->find_user (user_name);

    if (!found_user) {
        return false;
    }

    std::string user_token = user_token_supplier_->token (found_user);
    return user_token == token;
}
*/