Skip to content

Commit 2afc58a

Browse files
authored
Merge pull request #479 from Resgrid/develop
Develop
2 parents d4ddd40 + 37d27bd commit 2afc58a

186 files changed

Lines changed: 7981 additions & 1804 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Core/Resgrid.Config/OidcConfig.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,20 @@ public static class OidcConfig
1313

1414
public static string Key = "";
1515

16-
public static string ConnectionString = "Server=rgdevserver;Database=ResgridOIDC;User Id=resgrid_odic;Password=resgrid123;MultipleActiveResultSets=True;TrustServerCertificate=True;";
16+
public static string ConnectionString = "";
1717

1818
public static int AccessTokenExpiryMinutes = 1440;
1919

2020
public static int RefreshTokenExpiryDays = 365;
2121

2222
public static int NonMobileRefreshTokenExpiryDays = 2;
2323

24+
/// <summary>
25+
/// Comma-separated, registered client IDs allowed to receive the longer mobile
26+
/// refresh-token lifetime. Anonymous requests and caller-supplied scopes never qualify.
27+
/// </summary>
28+
public static string TrustedLongLivedClientIds = "";
29+
2430
public static string EncryptionCert = "";
2531

2632
public static string SigningCert = "";
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
namespace Resgrid.Config
2+
{
3+
public static class SessionSecurityConfig
4+
{
5+
// Session tracking is required by the Web BFF and is safe for pre-feature
6+
// credentials because they are adopted lazily by the validation middleware.
7+
public static bool TrackingEnabled = true;
8+
public static bool LegacyAdoptionEnabled = true;
9+
public static string RequireSessionClaimForCredentialsIssuedAfterUtc = "";
10+
// Blank is intentionally disabled at launch. Set to an ISO-8601 UTC timestamp
11+
// only after previewing stored DepartmentSecurityPolicy session values.
12+
public static string DepartmentSessionPolicyEnforcementAfterUtc = "";
13+
public static int LastActivityWriteIntervalMinutes = 5;
14+
public static int RevokedSessionRetentionDays = 90;
15+
public static int PublicResetLinkLifetimeMinutes = 30;
16+
public static int PublicResetAccountLimitPerHour = 3;
17+
public static int PublicResetIpLimitPerHour = 10;
18+
public static int WebBffAccessTokenLifetimeMinutes = 5;
19+
public static int ClientMetadataMaximumLength = 256;
20+
public static int UserAgentMaximumLength = 1024;
21+
// Optional local JSON CIDR database. Leave blank to display location as unavailable.
22+
public static string IpLocationDatabasePath = "";
23+
}
24+
}

Core/Resgrid.Localization/Areas/User/Account/ForcePasswordChange.en.resx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
<data name="PageHeader" xml:space="preserve"><value>Password Expired</value></data>
3434
<data name="ExpiredTitle" xml:space="preserve"><value>Your password has expired and must be changed before you can continue.</value></data>
3535
<data name="AlertWarningText" xml:space="preserve"><value>Your department's security policy requires that passwords be changed periodically. Please choose a new password to continue.</value></data>
36+
<data name="SessionRevocationWarning" xml:space="preserve"><value>Changing your password will log you out of every Resgrid session and revoke all access and refresh tokens.</value></data>
3637
<data name="RequirementsHeader" xml:space="preserve"><value>Password Requirements</value></data>
3738
<data name="ReqLength" xml:space="preserve"><value>At least {0} characters long</value></data>
3839
<data name="ReqDigit" xml:space="preserve"><value>At least one digit (number)</value></data>

Core/Resgrid.Localization/Areas/User/Department/Department.en.resx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1080,4 +1080,10 @@
10801080
<data name="UnitStatusBaseType_8" xml:space="preserve">
10811081
<value>Returning</value>
10821082
</data>
1083-
</root>
1083+
<data name="RequirePasswordResetViaEmail" xml:space="preserve">
1084+
<value>Require password resets by email</value>
1085+
</data>
1086+
<data name="RequirePasswordResetViaEmailHelp" xml:space="preserve">
1087+
<value>Prevents department and group administrators from choosing or seeing a member's new password. Reset actions send the member a short-lived, single-use email link instead. Existing sessions are revoked after the member successfully changes the password.</value>
1088+
</data>
1089+
</root>

Core/Resgrid.Localization/Areas/User/Department/Department.resx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,4 +675,10 @@
675675
<data name="UnitStatusBaseType_8" xml:space="preserve">
676676
<value>Returning</value>
677677
</data>
678-
</root>
678+
<data name="RequirePasswordResetViaEmail" xml:space="preserve">
679+
<value>Require password resets by email</value>
680+
</data>
681+
<data name="RequirePasswordResetViaEmailHelp" xml:space="preserve">
682+
<value>Prevents department and group administrators from choosing or seeing a member's new password. Reset actions send the member a short-lived, single-use email link instead. Existing sessions are revoked after the member successfully changes the password.</value>
683+
</data>
684+
</root>

Core/Resgrid.Localization/Areas/User/Profile/Profile.ar.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,7 @@
7272
<data name="PasswordRequirementsLength" xml:space="preserve"><value>على الأقل {0} أحرف</value></data>
7373
<data name="PasswordRequirementsDigit" xml:space="preserve"><value>رقم واحد على الأقل</value></data>
7474
<data name="PasswordRequirementsCase" xml:space="preserve"><value>حرف كبير وحرف صغير على الأقل</value></data>
75+
<data name="SendPasswordResetEmailHeader" xml:space="preserve"><value>إرسال بريد إلكتروني لإعادة تعيين كلمة المرور</value></data>
76+
<data name="SendPasswordResetEmail" xml:space="preserve"><value>إرسال بريد إلكتروني لإعادة تعيين كلمة المرور</value></data>
77+
<data name="SendPasswordResetEmailInfo" xml:space="preserve"><value>سيرسل Resgrid إلى هذا المستخدم رابطًا قصير الصلاحية يُستخدم مرة واحدة إلى عنوان بريده الإلكتروني المؤكد. لن يختار المسؤول كلمة المرور الجديدة ولن يراها.</value></data>
7578
</root>

Core/Resgrid.Localization/Areas/User/Profile/Profile.de.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,4 +251,7 @@
251251
<data name="PasswordRequirementsLength" xml:space="preserve"><value>Mindestens {0} Zeichen lang</value></data>
252252
<data name="PasswordRequirementsDigit" xml:space="preserve"><value>Mindestens eine Ziffer (Zahl)</value></data>
253253
<data name="PasswordRequirementsCase" xml:space="preserve"><value>Mindestens ein Groß- und ein Kleinbuchstabe</value></data>
254+
<data name="SendPasswordResetEmailHeader" xml:space="preserve"><value>E-Mail zum Zurücksetzen des Passworts senden</value></data>
255+
<data name="SendPasswordResetEmail" xml:space="preserve"><value>E-Mail zum Zurücksetzen des Passworts senden</value></data>
256+
<data name="SendPasswordResetEmailInfo" xml:space="preserve"><value>Resgrid sendet diesem Benutzer einen kurzlebigen, einmal verwendbaren Link an seine bestätigte E-Mail-Adresse. Der Administrator wählt oder sieht das neue Passwort nicht.</value></data>
254257
</root>

Core/Resgrid.Localization/Areas/User/Profile/Profile.el.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,4 +300,7 @@
300300
<data name="PasswordRequirementsLength" xml:space="preserve"><value>Τουλάχιστον {0} χαρακτήρες</value></data>
301301
<data name="PasswordRequirementsDigit" xml:space="preserve"><value>Τουλάχιστον ένα ψηφίο (αριθμός)</value></data>
302302
<data name="PasswordRequirementsCase" xml:space="preserve"><value>Τουλάχιστον ένα κεφαλαίο και ένα πεζό γράμμα</value></data>
303-
</root>
303+
<data name="SendPasswordResetEmailHeader" xml:space="preserve"><value>Αποστολή email επαναφοράς κωδικού πρόσβασης</value></data>
304+
<data name="SendPasswordResetEmail" xml:space="preserve"><value>Αποστολή email επαναφοράς κωδικού πρόσβασης</value></data>
305+
<data name="SendPasswordResetEmailInfo" xml:space="preserve"><value>Το Resgrid θα στείλει σε αυτόν τον χρήστη έναν σύνδεσμο σύντομης διάρκειας και μίας χρήσης στην επιβεβαιωμένη διεύθυνση email του. Ο διαχειριστής δεν θα επιλέξει ούτε θα δει τον νέο κωδικό πρόσβασης.</value></data>
306+
</root>

Core/Resgrid.Localization/Areas/User/Profile/Profile.en.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,4 +300,7 @@
300300
<data name="PasswordRequirementsLength" xml:space="preserve"><value>At least {0} characters long</value></data>
301301
<data name="PasswordRequirementsDigit" xml:space="preserve"><value>At least one digit (number)</value></data>
302302
<data name="PasswordRequirementsCase" xml:space="preserve"><value>At least one uppercase and one lowercase letter</value></data>
303-
</root>
303+
<data name="SendPasswordResetEmailHeader" xml:space="preserve"><value>Send Password Reset Email</value></data>
304+
<data name="SendPasswordResetEmail" xml:space="preserve"><value>Send Password Reset Email</value></data>
305+
<data name="SendPasswordResetEmailInfo" xml:space="preserve"><value>Resgrid will send this user a short-lived, single-use link at their confirmed email address. The administrator will not choose or see the new password.</value></data>
306+
</root>

Core/Resgrid.Localization/Areas/User/Profile/Profile.es.resx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,4 +300,7 @@
300300
<data name="PasswordRequirementsLength" xml:space="preserve"><value>Al menos {0} caracteres</value></data>
301301
<data name="PasswordRequirementsDigit" xml:space="preserve"><value>Al menos un dígito (número)</value></data>
302302
<data name="PasswordRequirementsCase" xml:space="preserve"><value>Al menos una letra mayúscula y una minúscula</value></data>
303-
</root>
303+
<data name="SendPasswordResetEmailHeader" xml:space="preserve"><value>Enviar correo de restablecimiento de contraseña</value></data>
304+
<data name="SendPasswordResetEmail" xml:space="preserve"><value>Enviar correo de restablecimiento de contraseña</value></data>
305+
<data name="SendPasswordResetEmailInfo" xml:space="preserve"><value>Resgrid enviará a este usuario un enlace de corta duración y de un solo uso a su dirección de correo confirmada. El administrador no elegirá ni verá la nueva contraseña.</value></data>
306+
</root>

0 commit comments

Comments
 (0)