libDwm-0.6.0
DwmPassword.hh
Go to the documentation of this file.
1 //===========================================================================
2 // @(#) $DwmPath: dwm/libDwm/tags/libDwm-0.6.0/include/DwmPassword.hh 8401 $
3 // @(#) $Id: DwmPassword.hh 8401 2016-04-17 06:44:31Z dwm $
4 //===========================================================================
5 // Copyright (c) Daniel W. McRobb 2006-2007, 2016
6 // All rights reserved.
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions
10 // are met:
11 //
12 // 1. Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 // 2. Redistributions in binary form must reproduce the above copyright
15 // notice, this list of conditions and the following disclaimer in the
16 // documentation and/or other materials provided with the distribution.
17 // 3. The names of the authors and copyright holders may not be used to
18 // endorse or promote products derived from this software without
19 // specific prior written permission.
20 //
21 // IN NO EVENT SHALL DANIEL W. MCROBB BE LIABLE TO ANY PARTY FOR
22 // DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
23 // INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE,
24 // EVEN IF DANIEL W. MCROBB HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
25 // DAMAGE.
26 //
27 // THE SOFTWARE PROVIDED HEREIN IS ON AN "AS IS" BASIS, AND
28 // DANIEL W. MCROBB HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
29 // UPDATES, ENHANCEMENTS, OR MODIFICATIONS. DANIEL W. MCROBB MAKES NO
30 // REPRESENTATIONS AND EXTENDS NO WARRANTIES OF ANY KIND, EITHER
31 // IMPLIED OR EXPRESS, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
32 // WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE,
33 // OR THAT THE USE OF THIS SOFTWARE WILL NOT INFRINGE ANY PATENT,
34 // TRADEMARK OR OTHER RIGHTS.
35 //===========================================================================
36 
37 //---------------------------------------------------------------------------
40 //---------------------------------------------------------------------------
41 
42 #ifndef _DWMPASSWORD_HH_
43 #define _DWMPASSWORD_HH_
44 
45 extern "C" {
46 #include <sys/types.h>
47 #include <pwd.h>
48 }
49 
50 #include <iostream>
51 #include <mutex>
52 #include <string>
53 
54 namespace Dwm {
55 
56  //--------------------------------------------------------------------------
60  //--------------------------------------------------------------------------
61  class Password
62  {
63  public:
64  //------------------------------------------------------------------------
66  //------------------------------------------------------------------------
67  Password(const std::string & userName);
68 
69  //------------------------------------------------------------------------
71  //------------------------------------------------------------------------
72  Password(uid_t userId);
73 
74  //------------------------------------------------------------------------
76  //------------------------------------------------------------------------
77  void Set(const struct passwd & passwdStruct);
78 
79  //------------------------------------------------------------------------
81  //------------------------------------------------------------------------
82  const std::string & UserName() const;
83 
84  //------------------------------------------------------------------------
86  //------------------------------------------------------------------------
87  const std::string & EncryptedPassword() const;
88 
89  //------------------------------------------------------------------------
91  //------------------------------------------------------------------------
92  uid_t UserId() const;
93 
94  //------------------------------------------------------------------------
96  //------------------------------------------------------------------------
97  gid_t GroupId() const;
98 
99  //------------------------------------------------------------------------
101  //------------------------------------------------------------------------
102  const std::string & Gecos() const;
103 
104  //------------------------------------------------------------------------
106  //------------------------------------------------------------------------
107  const std::string & HomeDirectory() const;
108 
109  //------------------------------------------------------------------------
111  //------------------------------------------------------------------------
112  const std::string & Shell() const;
113 
114  //------------------------------------------------------------------------
116  //------------------------------------------------------------------------
117  friend std::ostream & operator << (std::ostream & os,
118  const Password & password);
119 
120  private:
121  std::string _userName;
122  std::string _encryptedPassword;
123  uid_t _userId;
124  gid_t _groupId;
125  std::string _gecos;
126  std::string _homeDirectory;
127  std::string _shell;
128 
129  static std::mutex _mutex;
130  };
131 
132 } // namespace Dwm
133 
134 #endif // _DWMPASSWORD_HH_
135 
136 //---------------------------- emacs settings -----------------------------
137 // Local Variables:
138 // mode: C++/la
139 // tab-width: 2
140 // indent-tabs-mode: nil
141 // c-basic-offset: 2
142 // End:
143 //-------------------------------------------------------------------------
const std::string & HomeDirectory() const
Returns the home directory.
Encapsulates an /etc/passwd entry.
Definition: DwmPassword.hh:61
void Set(const struct passwd &passwdStruct)
Use the contents of passwdStruct to fill all of our members.
uid_t UserId() const
Returns the user ID.
gid_t GroupId() const
Returns the group ID.
Password(const std::string &userName)
Construct from a user name.
Definition: DwmBZ2IO.hh:67
const std::string & Shell() const
Returns the shell.
const std::string & UserName() const
Returns the user name.
const std::string & Gecos() const
Returns the gecos.
friend std::ostream & operator<<(std::ostream &os, const Password &password)
Prints to an ostream in /etc/passwd format.
const std::string & EncryptedPassword() const
Returns the user password.