Dylan M. Taylor
7a858878a0
userdb: add birthDate field to JSON user records
...
Add a birthDate field to the JSON user record, stored internally as a
struct tm with INT_MIN/negative sentinels for unset fields. The field
is serialized as a YYYY-MM-DD string in JSON and validated via
parse_birth_date(), which shares its core logic with
parse_calendar_date() through a new parse_calendar_date_full()
function.
For birth dates, timegm() is called directly (rather than
mktime_or_timegm_usec) to support pre-epoch dates. The wday field is
used to distinguish timegm() failure from a valid (time_t) -1 return.
birthDate is excluded from user_record_self_modifiable_fields(), so
only administrators can set or change it via homectl. The field
remains in the regular (non-privileged) JSON section, keeping it
readable by the user and applications.
2026-03-18 17:33:22 -04:00
..
2026-01-31 01:11:11 +09:00
2025-02-17 19:49:32 +00:00
2026-02-12 17:49:19 +00:00
2024-11-29 14:18:15 +01:00
2026-01-31 01:11:11 +09:00
2026-02-09 11:01:15 +01:00
2026-01-31 01:11:11 +09:00
2025-11-12 23:01:35 +00:00
2026-01-31 01:11:11 +09:00
2026-02-18 03:28:12 +09:00
2026-02-18 03:28:12 +09:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2025-04-25 00:42:24 +01:00
2026-01-31 01:11:11 +09:00
2026-03-06 17:46:59 +01:00
2026-02-03 12:49:37 +01:00
2026-03-16 10:55:02 +01:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2024-12-19 15:35:55 +01:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2025-07-07 17:28:47 +00:00
2026-01-31 01:11:11 +09:00
2025-11-19 20:00:25 +01:00
2024-12-19 15:35:55 +01:00
2026-02-16 08:09:33 +09:00
2025-03-05 12:38:30 +01:00
2026-01-31 01:11:11 +09:00
2026-02-12 17:49:19 +00:00
2026-01-31 01:11:11 +09:00
2025-09-24 08:48:17 +02:00
2025-05-14 18:06:04 +02:00
2025-12-28 09:31:47 +00:00
2026-01-31 01:11:11 +09:00
2026-02-09 02:36:50 +01:00
2026-01-16 22:56:08 +09:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2026-03-12 09:37:24 +01:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2025-10-24 01:52:59 +09:00
2025-11-25 22:52:10 +09:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2025-12-18 10:50:23 +01:00
2025-11-19 20:00:25 +01:00
2025-12-31 10:59:41 -05:00
2026-01-29 00:40:18 +09:00
2026-02-01 09:40:10 +01:00
2026-01-31 01:11:11 +09:00
2025-11-23 17:16:09 +01:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2026-02-09 09:36:53 +01:00
2026-01-31 01:11:11 +09:00
2025-07-22 18:03:39 +01:00
2026-01-29 00:40:18 +09:00
2026-02-12 17:49:19 +00:00
2026-03-18 10:36:43 +00:00
2026-03-12 09:38:03 +01:00
2026-01-31 01:11:11 +09:00
2026-01-30 13:19:33 +09:00
2026-01-31 01:11:11 +09:00
2025-04-16 08:30:25 +09:00
2026-01-31 01:11:11 +09:00
2026-03-02 23:26:21 +00:00
2025-07-07 17:28:47 +00:00
2026-02-24 18:29:37 +01:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00
2026-03-18 17:33:22 -04:00
2026-01-31 01:11:11 +09:00
2025-11-14 17:54:20 +01:00
2026-01-31 01:11:11 +09:00
2026-01-31 01:11:11 +09:00