]> git.ipfire.org Git - thirdparty/squid.git/blame - src/auth/basic/User.cc
Docs: Copyright updates for 2018 (#114)
[thirdparty/squid.git] / src / auth / basic / User.cc
CommitLineData
bbc27441 1/*
5b74111a 2 * Copyright (C) 1996-2018 The Squid Software Foundation and contributors
bbc27441
AJ
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
f7f3304a 9#include "squid.h"
12daeef6 10#include "auth/basic/Config.h"
aa110616 11#include "auth/basic/User.h"
5db226c8 12#include "auth/Config.h"
638cfbc4 13#include "auth/CredentialsCache.h"
aa110616 14#include "Debug.h"
aa110616 15
dc79fed8 16Auth::Basic::User::User(Auth::SchemeConfig *aConfig, const char *aRequestRealm) :
f53969cc
SM
17 Auth::User(aConfig, aRequestRealm),
18 passwd(NULL),
19 queue(NULL),
20 currentRequest(NULL)
46b1e6bf 21{}
aa110616
AJ
22
23Auth::Basic::User::~User()
24{
25 safe_free(passwd);
26}
27
28int32_t
29Auth::Basic::User::ttl() const
30{
31 if (credentials() != Auth::Ok && credentials() != Auth::Pending)
32 return -1; // TTL is obsolete NOW.
33
34 int32_t basic_ttl = expiretime - squid_curtime + static_cast<Auth::Basic::Config*>(config)->credentialsTTL;
00ef8d82 35 int32_t global_ttl = static_cast<int32_t>(expiretime - squid_curtime + Auth::TheConfig.credentialsTtl);
aa110616
AJ
36
37 return min(basic_ttl, global_ttl);
38}
39
40bool
41Auth::Basic::User::authenticated() const
42{
43 if ((credentials() == Auth::Ok) && (expiretime + static_cast<Auth::Basic::Config*>(config)->credentialsTTL > squid_curtime))
44 return true;
45
46 debugs(29, 4, "User not authenticated or credentials need rechecking.");
47
48 return false;
49}
50
51bool
52Auth::Basic::User::valid() const
53{
54 if (username() == NULL)
55 return false;
56 if (passwd == NULL)
57 return false;
58 return true;
59}
60
61void
62Auth::Basic::User::updateCached(Auth::Basic::User *from)
63{
64 debugs(29, 9, HERE << "Found user '" << from->username() << "' already in the user cache as '" << this << "'");
65
66 assert(strcmp(from->username(), username()) == 0);
67
68 if (strcmp(from->passwd, passwd)) {
69 debugs(29, 4, HERE << "new password found. Updating in user master record and resetting auth state to unchecked");
70 credentials(Auth::Unchecked);
71 xfree(passwd);
72 passwd = from->passwd;
73 from->passwd = NULL;
74 }
75
76 if (credentials() == Auth::Failed) {
77 debugs(29, 4, HERE << "last attempt to authenticate this user failed, resetting auth state to unchecked");
78 credentials(Auth::Unchecked);
79 }
80}
81
638cfbc4 82CbcPointer<Auth::CredentialsCache>
e1568a40
FC
83Auth::Basic::User::Cache()
84{
455bb54d 85 static CbcPointer<Auth::CredentialsCache> p(new Auth::CredentialsCache("basic", "GC Basic user credentials"));
e1568a40
FC
86 return p;
87}
88
283c905d
FC
89void
90Auth::Basic::User::addToNameCache()
91{
97821413 92 Cache()->insert(userKey(), this);
283c905d 93}
7512e3f9 94