1/*
2 * Copyright 2023, Andrew Lindesay <apl@lindesay.co.nz>.
3 * All rights reserved. Distributed under the terms of the MIT License.
4 */
5
6
7#include "PasswordRequirements.h"
8
9// These are keys that are used to store this object's data into a BMessage
10// instance.
11
12#define KEY_MIN_PASSWORD_LENGTH			"minPasswordLength"
13#define KEY_MIN_PASSWORD_UPPERCASE_CHAR	"minPasswordUppercaseChar"
14#define KEY_MIN_PASSWORD_DIGITS_CHAR	"minPasswordDigitsChar"
15
16
17PasswordRequirements::PasswordRequirements()
18	:
19	fMinPasswordLength(0),
20	fMinPasswordUppercaseChar(0),
21	fMinPasswordDigitsChar(0)
22{
23}
24
25
26PasswordRequirements::PasswordRequirements(BMessage* from)
27	:
28	fMinPasswordLength(0),
29	fMinPasswordUppercaseChar(0),
30	fMinPasswordDigitsChar(0)
31{
32	uint32 value;
33
34	if (from->FindUInt32(KEY_MIN_PASSWORD_LENGTH, &value) == B_OK) {
35		fMinPasswordLength = value;
36	}
37
38	if (from->FindUInt32(
39			KEY_MIN_PASSWORD_UPPERCASE_CHAR, &value) == B_OK) {
40		fMinPasswordUppercaseChar = value;
41	}
42
43	if (from->FindUInt32(
44			KEY_MIN_PASSWORD_DIGITS_CHAR, &value) == B_OK) {
45		fMinPasswordDigitsChar = value;
46	}
47}
48
49
50PasswordRequirements::~PasswordRequirements()
51{
52}
53
54
55void
56PasswordRequirements::SetMinPasswordLength(uint32 value)
57{
58	fMinPasswordLength = value;
59}
60
61
62void
63PasswordRequirements::SetMinPasswordUppercaseChar(uint32 value)
64{
65	fMinPasswordUppercaseChar = value;
66}
67
68
69void
70PasswordRequirements::SetMinPasswordDigitsChar(uint32 value)
71{
72	fMinPasswordDigitsChar = value;
73}
74
75
76status_t
77PasswordRequirements::Archive(BMessage* into, bool deep) const
78{
79	status_t result = B_OK;
80	if (result == B_OK) {
81		result = into->AddUInt32(
82			KEY_MIN_PASSWORD_LENGTH, fMinPasswordLength);
83	}
84	if (result == B_OK) {
85		result = into->AddUInt32(
86			KEY_MIN_PASSWORD_UPPERCASE_CHAR, fMinPasswordUppercaseChar);
87	}
88	if (result == B_OK) {
89		result = into->AddUInt32(
90			KEY_MIN_PASSWORD_DIGITS_CHAR, fMinPasswordDigitsChar);
91	}
92	return result;
93}
94