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