1 /*
2  * Copyright (C) 1996-2021 The Squid Software Foundation and contributors
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 
9 #ifndef SQUID_ACLUSERDATA_H
10 #define SQUID_ACLUSERDATA_H
11 
12 #include "acl/Acl.h"
13 #include "acl/Data.h"
14 #include "sbuf/SBuf.h"
15 
16 #include <set>
17 
18 class ACLUserData : public ACLData<char const *>
19 {
20     MEMPROXY_CLASS(ACLUserData);
21 
22 public:
~ACLUserData()23     virtual ~ACLUserData() {}
24     ACLUserData();
25     bool match(char const *user);
26     virtual SBufList dump() const;
27     void parse();
28     virtual const Acl::ParameterFlags &supportedFlags() const;
29     bool empty() const;
30     virtual ACLData<char const *> *clone() const;
31 
32 private:
33 
34     typedef std::set<SBuf,bool(*)(const SBuf&, const SBuf&)> UserDataNames_t;
35     UserDataNames_t userDataNames;
36 
37     struct {
38         bool case_insensitive;
39         bool required;
40     } flags;
41 
42 };
43 
44 #endif /* SQUID_ACLUSERDATA_H */
45 
46