52 lines
1.4 KiB
C++
52 lines
1.4 KiB
C++
// Copyright 2021 James Pace
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
#include <algorithm>
|
|
#include <j7s-plugin/AuthList.hpp>
|
|
|
|
AuthList::AuthList() : _map{} {}
|
|
|
|
void AuthList::add(const std::string &username, const time_T &expr_time)
|
|
{
|
|
// Add the user to the list or update it's expr time if
|
|
// it's already there.
|
|
_map[username] = expr_time;
|
|
}
|
|
|
|
void AuthList::remove(const std::string &username)
|
|
{
|
|
// Remove the user
|
|
_map.erase(username);
|
|
}
|
|
|
|
bool AuthList::confirm(const std::string &username)
|
|
{
|
|
// Is the user in the map?
|
|
const auto iter = _map.find(username);
|
|
|
|
if (iter == _map.end())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// Has the token expired?
|
|
const auto now = std::chrono::system_clock::now();
|
|
const auto expr_time = std::get<1>(*iter);
|
|
if (now < expr_time)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|