xref: /haiku/src/apps/haikudepot/model/PasswordRequirements.h (revision b6356b9116f2238d880e558637200cde1cd7e407)
1*b6356b91SAndrew Lindesay /*
2*b6356b91SAndrew Lindesay  * Copyright 2023, Andrew Lindesay <apl@lindesay.co.nz>.
3*b6356b91SAndrew Lindesay  * All rights reserved. Distributed under the terms of the MIT License.
4*b6356b91SAndrew Lindesay  */
5*b6356b91SAndrew Lindesay #ifndef PASSWORD_REQUIREMENTS_H
6*b6356b91SAndrew Lindesay #define PASSWORD_REQUIREMENTS_H
7*b6356b91SAndrew Lindesay 
8*b6356b91SAndrew Lindesay 
9*b6356b91SAndrew Lindesay #include <Archivable.h>
10*b6356b91SAndrew Lindesay #include <String.h>
11*b6356b91SAndrew Lindesay 
12*b6356b91SAndrew Lindesay 
13*b6356b91SAndrew Lindesay /*!	When a user enters their password there are requirements around that
14*b6356b91SAndrew Lindesay     password such as the length of the password in characters as well as
15*b6356b91SAndrew Lindesay     how many digits it must contain.  This class models those
16*b6356b91SAndrew Lindesay     requirements so that they can be conveyed to the user in the UI.
17*b6356b91SAndrew Lindesay */
18*b6356b91SAndrew Lindesay 
19*b6356b91SAndrew Lindesay class PasswordRequirements : public BArchivable {
20*b6356b91SAndrew Lindesay public:
21*b6356b91SAndrew Lindesay 								PasswordRequirements(BMessage* from);
22*b6356b91SAndrew Lindesay 								PasswordRequirements();
23*b6356b91SAndrew Lindesay 	virtual						~PasswordRequirements();
24*b6356b91SAndrew Lindesay 
MinPasswordLength()25*b6356b91SAndrew Lindesay 	const	uint32				MinPasswordLength() const
26*b6356b91SAndrew Lindesay 									{ return fMinPasswordLength; }
MinPasswordUppercaseChar()27*b6356b91SAndrew Lindesay 	const	uint32				MinPasswordUppercaseChar() const
28*b6356b91SAndrew Lindesay 									{ return fMinPasswordUppercaseChar; }
MinPasswordDigitsChar()29*b6356b91SAndrew Lindesay 	const	uint32				MinPasswordDigitsChar() const
30*b6356b91SAndrew Lindesay 									{ return fMinPasswordDigitsChar; }
31*b6356b91SAndrew Lindesay 
32*b6356b91SAndrew Lindesay 			void				SetMinPasswordLength(uint32 value);
33*b6356b91SAndrew Lindesay 			void				SetMinPasswordUppercaseChar(uint32 value);
34*b6356b91SAndrew Lindesay 			void				SetMinPasswordDigitsChar(uint32 value);
35*b6356b91SAndrew Lindesay 
36*b6356b91SAndrew Lindesay 			status_t			Archive(BMessage* into, bool deep = true) const;
37*b6356b91SAndrew Lindesay private:
38*b6356b91SAndrew Lindesay 			uint32				fMinPasswordLength;
39*b6356b91SAndrew Lindesay 			uint32				fMinPasswordUppercaseChar;
40*b6356b91SAndrew Lindesay 			uint32				fMinPasswordDigitsChar;
41*b6356b91SAndrew Lindesay };
42*b6356b91SAndrew Lindesay 
43*b6356b91SAndrew Lindesay #endif // PASSWORD_REQUIREMENTS_H
44