diff --git a/Config/Entities/Group.cs b/Config/Entities/Group.cs index 208840ee6..854276604 100644 --- a/Config/Entities/Group.cs +++ b/Config/Entities/Group.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2017 Sensus Metering Systems +/// Copyright (c) 2013-2019 Sensus Slovensko a.s. /// using System; @@ -8,17 +8,15 @@ namespace Config.Entities public class Group { public virtual int Id { get; protected set; } - public virtual int Gid { get; set; } - public virtual string Name { get; set; } + public virtual Users.Entities.GID GID { get; set; } public Group() { } - public Group(int gid, string name) + public Group(Users.Entities.GID gid) { - Gid = gid; - Name = name; + GID = gid; } } } diff --git a/Config/Entities/User.cs b/Config/Entities/User.cs index e39736ed4..87f16d5e9 100644 --- a/Config/Entities/User.cs +++ b/Config/Entities/User.cs @@ -16,6 +16,7 @@ namespace Config.Entities public virtual string Password { get; set; } public virtual string Password2 { get; set; } public virtual string Password3 { get; set; } + public virtual string Password4 { get; set; } public virtual DateTime LastPwChange { get; set; } public virtual IList Groups { get; set; } //User can be a member of a list of groups diff --git a/Config/FluentCommon.cs b/Config/FluentCommon.cs index 49e0ab41f..aea33ca46 100644 --- a/Config/FluentCommon.cs +++ b/Config/FluentCommon.cs @@ -147,13 +147,13 @@ namespace Config /// /// Prepare all groups /// - var testers = new Config.Entities.Group((int)Users.Grp.GID.Testers, Strings.Tester); - var testingSpecialists = new Config.Entities.Group((int)Users.Grp.GID.TestingSpecialists, Strings.Testing_Specialist); - var headOfLab = new Config.Entities.Group((int)Users.Grp.GID.HeadOfLab, Strings.Head_of_Lab); - var maintenanceSpecialists = new Config.Entities.Group((int)Users.Grp.GID.MaintenanceSpecialists, Strings.Maintenance_Specialist); - var metrologists = new Config.Entities.Group((int)Users.Grp.GID.Metrologists, Strings.Metrologist); - var calibrationSpecialists = new Config.Entities.Group((int)Users.Grp.GID.CalibrationSpecialists, Strings.Calibration_Specialist); - var administrators = new Config.Entities.Group((int)Users.Grp.GID.Administrators, Strings.Administrator); + var testers = new Config.Entities.Group(Users.Entities.GID.Testers); + var testingSpecialists = new Config.Entities.Group(Users.Entities.GID.TestingSpecialists); + var headOfLab = new Config.Entities.Group(Users.Entities.GID.HeadOfLab); + var maintenanceSpecialists = new Config.Entities.Group(Users.Entities.GID.MaintenanceSpecialists); + var metrologists = new Config.Entities.Group(Users.Entities.GID.Metrologists); + var calibrationSpecialists = new Config.Entities.Group(Users.Entities.GID.CalibrationSpecialists); + var administrators = new Config.Entities.Group(Users.Entities.GID.Administrators); /// Create the user 'admin' add his groups var admin = new Config.Entities.User diff --git a/Config/Mappings/GroupMap.cs b/Config/Mappings/GroupMap.cs index 2e0ada877..a18e5b623 100644 --- a/Config/Mappings/GroupMap.cs +++ b/Config/Mappings/GroupMap.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2013-2015 Sensus Metering Systems +/// Copyright (c) 2013-2019 Sensus Slovensko a.s. /// using FluentNHibernate.Mapping; @@ -10,8 +10,7 @@ namespace Config.Mappings public GroupMap() { Id(x => x.Id); - Map(x => x.Gid); - Map(x => x.Name); + Map(x => x.GID).Column("Name"); ; } } } diff --git a/Config/Mappings/UserMap.cs b/Config/Mappings/UserMap.cs index 6c63d6077..b46ca11d1 100644 --- a/Config/Mappings/UserMap.cs +++ b/Config/Mappings/UserMap.cs @@ -12,12 +12,11 @@ namespace Config.Mappings Id(x => x.Id); Map(x => x.UserName).Column("Name"); Map(x => x.Number); -#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL Map(x => x.Tag); -#endif Map(x => x.Password); Map(x => x.Password2); Map(x => x.Password3); + Map(x => x.Password4); Map(x => x.FullName).Column("Description"); Map(x => x.LastPwChange); HasMany(x => x.Groups) diff --git a/Config/Properties/AssemblyInfo.cs b/Config/Properties/AssemblyInfo.cs index d9676dc39..bae1033f2 100644 --- a/Config/Properties/AssemblyInfo.cs +++ b/Config/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.24.1369.0")] -[assembly: AssemblyFileVersion("2.24.1369.0")] +[assembly: AssemblyVersion("2.24.1382.0")] +[assembly: AssemblyFileVersion("2.24.1382.0")] diff --git a/Config/Resources/Strings.de.resx b/Config/Resources/Strings.de.resx index e9a6e00e3..29655693c 100644 --- a/Config/Resources/Strings.de.resx +++ b/Config/Resources/Strings.de.resx @@ -117,27 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Administrator - - - Kalibriertechniker - - - Laborleiter - - - Wartungstechniker - - - Messtechniker - - - Prüfer - - - Prüftechniker - NiO diff --git a/Config/Resources/Strings.fr.resx b/Config/Resources/Strings.fr.resx index 426eb44af..5b5fd65e3 100644 --- a/Config/Resources/Strings.fr.resx +++ b/Config/Resources/Strings.fr.resx @@ -117,27 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Administrateur - - - Spécialiste en calibration - - - Chef de laboratoire - - - Spécialiste en maintenance - - - Métrologue - - - Testeur - - - Spécialiste d'essais - Échoué diff --git a/Config/Resources/Strings.it.resx b/Config/Resources/Strings.it.resx index 457cc0e9f..10335ff4a 100644 --- a/Config/Resources/Strings.it.resx +++ b/Config/Resources/Strings.it.resx @@ -117,27 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Amministratore - - - esperto in calibrazione - - - capo di laboratorio - - - esperto di manutenzione - - - metrologo - - - tester - - - esperto di prove - NOK diff --git a/Config/Resources/Strings.pl.resx b/Config/Resources/Strings.pl.resx index def032d3b..548053b4a 100644 --- a/Config/Resources/Strings.pl.resx +++ b/Config/Resources/Strings.pl.resx @@ -117,27 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Administrator - - - Specjalista ds. kalibracji - - - Kierownik Laboratorium - - - Konserwator - - - Metrolog - - - Pracownik przeprowadzający testy - - - Specjalista ds. testów - Niepowodzenie diff --git a/Config/Resources/Strings.resx b/Config/Resources/Strings.resx index 25ef4532b..affdc9a17 100644 --- a/Config/Resources/Strings.resx +++ b/Config/Resources/Strings.resx @@ -117,27 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Administrator - - - Calibration Specialist - - - Head of Lab - - - Maintenance Specialist - - - Metrologist - - - Tester - - - Testing Specialist - NOK diff --git a/Config/Resources/Strings.ru.resx b/Config/Resources/Strings.ru.resx index 00b613b0a..37069741b 100644 --- a/Config/Resources/Strings.ru.resx +++ b/Config/Resources/Strings.ru.resx @@ -117,27 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Администратор - - - Специалист по калибровке - - - Руководитель лаборатории - - - Специалист по техобслуживанию - - - Метролог - - - Контролер - - - Специалист по тестированию - NOK diff --git a/Config/Resources/Strings.zh-CN.resx b/Config/Resources/Strings.zh-CN.resx index a95f116cc..d1d94bf7e 100644 --- a/Config/Resources/Strings.zh-CN.resx +++ b/Config/Resources/Strings.zh-CN.resx @@ -1,128 +1,129 @@  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 管理员 - - - 校准专员 - - - NOK - - - 实验室负责人 - - - 维护专员 - - - 计量者 - - - - - - 测试仪 - - - 测试专员 - + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 错误 Error + + + NOK + + + + \ No newline at end of file diff --git a/TBF/BenchControl/ComponentParametersDlg.cs b/TBF/BenchControl/ComponentParametersDlg.cs index 856c12821..18451e747 100644 --- a/TBF/BenchControl/ComponentParametersDlg.cs +++ b/TBF/BenchControl/ComponentParametersDlg.cs @@ -42,7 +42,7 @@ namespace TBF.BenchControl Flags = CfgUpdateFlags.None; /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { global::Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { global::Users.Entities.GID.Metrologists }; sharedButtons.MoreButtonTop = ComponentCfgCtrlHeight - 45; sharedButtons.OptionalButtons = SharedButtons.Buttons.None; sharedButtons.Unlocked += Unlock; diff --git a/TBF/BenchControl/Elde/CoverTest/CoverTest.cs b/TBF/BenchControl/Elde/CoverTest/CoverTest.cs index c1eab91e5..5aed994d5 100644 --- a/TBF/BenchControl/Elde/CoverTest/CoverTest.cs +++ b/TBF/BenchControl/Elde/CoverTest/CoverTest.cs @@ -24,7 +24,7 @@ namespace TBF.BenchControl.Elde.CoverTest readonly ulong mask; /// derived from bitPosition in the constructor readonly ulong target; readonly string message; - readonly Users.Grp.GID[] bypassLevel; + readonly Users.Entities.GID[] bypassLevel; public CoverTest() { diff --git a/TBF/BenchControl/Elde/CoverTest/CoverTestCfg.cs b/TBF/BenchControl/Elde/CoverTest/CoverTestCfg.cs index 255e6213c..41295a532 100644 --- a/TBF/BenchControl/Elde/CoverTest/CoverTestCfg.cs +++ b/TBF/BenchControl/Elde/CoverTest/CoverTestCfg.cs @@ -22,7 +22,7 @@ namespace TBF.BenchControl.Elde.CoverTest public int BitPosition; public bool Invert; public string Message; - public Users.Grp.GID[] BypassLevel; + public Users.Entities.GID[] BypassLevel; /// Private parameterless constructor invoked by all other (public) constructors CoverTestCfg() @@ -35,7 +35,7 @@ namespace TBF.BenchControl.Elde.CoverTest Invert = false; Message = Strings.Close_the_cover; - BypassLevel = new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists }; + BypassLevel = new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists }; } public CoverTestCfg(IComponentFactory factory) diff --git a/TBF/BenchControl/Elde/CoverTest/CoverTestCfgCtrl.cs b/TBF/BenchControl/Elde/CoverTest/CoverTestCfgCtrl.cs index a2b0e99ac..37ad93a0b 100644 --- a/TBF/BenchControl/Elde/CoverTest/CoverTestCfgCtrl.cs +++ b/TBF/BenchControl/Elde/CoverTest/CoverTestCfgCtrl.cs @@ -46,7 +46,7 @@ namespace TBF.BenchControl.Elde.CoverTest } } - for (Users.Grp.GID gid = 0; gid < Users.Grp.GID.NrOfGroups; gid++) + for (Users.Entities.GID gid = 0; gid < Users.Entities.GID.NrOfGroups; gid++) { bypassLevelComboBox.Items.Add(gid.ToString()); } @@ -94,11 +94,11 @@ namespace TBF.BenchControl.Elde.CoverTest config.Message = messageTextBox.Text; config.BypassLevel = null; - for (Users.Grp.GID gid = 0; gid < Users.Grp.GID.NrOfGroups; gid++) + for (Users.Entities.GID gid = 0; gid < Users.Entities.GID.NrOfGroups; gid++) { if (bypassLevelComboBox.Text == gid.ToString()) { - config.BypassLevel = new Users.Grp.GID[] { gid }; + config.BypassLevel = new Users.Entities.GID[] { gid }; break; } } diff --git a/TBF/BenchControl/Elde/CoverTest/CoverTestForm.cs b/TBF/BenchControl/Elde/CoverTest/CoverTestForm.cs index 2e157c518..b2b55ee67 100644 --- a/TBF/BenchControl/Elde/CoverTest/CoverTestForm.cs +++ b/TBF/BenchControl/Elde/CoverTest/CoverTestForm.cs @@ -18,9 +18,9 @@ namespace TBF.BenchControl.Elde.CoverTest public bool Completed { get { return completed; } } bool completed; - Users.Grp.GID[] bypassLevel; + Users.Entities.GID[] bypassLevel; - public CoverTestForm(string message, Users.Grp.GID[] bypassLevel, ILog bypassLog) + public CoverTestForm(string message, Users.Entities.GID[] bypassLevel, ILog bypassLog) { InitializeComponent(); ControlBox = false; diff --git a/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs b/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs index c5c7987b2..9fbd9a880 100644 --- a/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs +++ b/TBF/BenchControl/TestMethods/Endurance/CycleDlg.cs @@ -46,7 +46,7 @@ namespace TBF.BenchControl.TestMethods.Endurance InitializeComponent(); /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.Metrologists }; sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | diff --git a/TBF/Program.cs b/TBF/Program.cs index 239b5e42b..00b16acc7 100644 --- a/TBF/Program.cs +++ b/TBF/Program.cs @@ -8,6 +8,7 @@ using System.Windows.Forms; using log4net; using Config.Entities; using Users; +using Users.Entities; using TBF.Resources; using TBF.UI.Shared; @@ -254,12 +255,12 @@ namespace TBF try { #if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL - Grp.GID[] reqGrpMembership = new Grp.GID[] { Grp.GID.Testers, Grp.GID.TestingSpecialists, Grp.GID.Metrologists, Grp.GID.HeadOfLab }; + GID[] reqGrpMembership = new Grp.GID[] { Grp.GID.Testers, Grp.GID.TestingSpecialists, Grp.GID.Metrologists, Grp.GID.HeadOfLab }; #else - Grp.GID[] reqGrpMembership = null; + GID[] reqGrpMembership = null; #endif bool authorized = false; - Users.Entities.AuthorizedAs authorizedAs = Users.Entities.AuthorizedAs.PowerUser; + AuthorizedAs authorizedAs = Users.Entities.AuthorizedAs.PowerUser; if (Users.Entities.User.IsPowerUser(loginDlgBench.Alias, loginDlgBench.Password)) { diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index e4719e649..2b2104d8e 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.24.1369.0")] -[assembly: AssemblyFileVersion("2.24.1369.0")] +[assembly: AssemblyVersion("2.24.1382.0")] +[assembly: AssemblyFileVersion("2.24.1382.0")] diff --git a/TBF/UI/Bench/Components/ComponentsManagerDlg.cs b/TBF/UI/Bench/Components/ComponentsManagerDlg.cs index 485d525a6..41447c69d 100644 --- a/TBF/UI/Bench/Components/ComponentsManagerDlg.cs +++ b/TBF/UI/Bench/Components/ComponentsManagerDlg.cs @@ -69,7 +69,7 @@ namespace TBF.UI.Bench.Components selectComponentTypeDlg = new SelectComponentClassDlg(); /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.Metrologists }; sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | diff --git a/TBF/UI/Bench/Metrology/MetrologyDlg.cs b/TBF/UI/Bench/Metrology/MetrologyDlg.cs index 2d5f6134d..0f9238d94 100644 --- a/TBF/UI/Bench/Metrology/MetrologyDlg.cs +++ b/TBF/UI/Bench/Metrology/MetrologyDlg.cs @@ -26,11 +26,7 @@ namespace TBF.UI.Bench.Metrology InitializeComponent(); /// SharedDlgButtons configuration -#if KEMPNO_50 - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.MetrologicalAuthority }; -#else - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists }; -#endif + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.Metrologists, Users.Entities.GID.MetrologicalAuthority }; sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove; sharedButtons.Unlocked += unlockButton_Click; sharedButtons.OKClicked += okButton_Click; diff --git a/TBF/UI/Bench/Paths/PathsDlg.cs b/TBF/UI/Bench/Paths/PathsDlg.cs index 5d465f169..5e65ce83c 100644 --- a/TBF/UI/Bench/Paths/PathsDlg.cs +++ b/TBF/UI/Bench/Paths/PathsDlg.cs @@ -51,7 +51,7 @@ namespace TBF.UI.Bench.Paths InitializeComponent(); /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.Metrologists }; sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down; sharedButtons.Unlocked += Unlocked; diff --git a/TBF/UI/Bench/TestProfiles/TestProfileDlg.cs b/TBF/UI/Bench/TestProfiles/TestProfileDlg.cs index 385a5f5c1..d0e8f12af 100644 --- a/TBF/UI/Bench/TestProfiles/TestProfileDlg.cs +++ b/TBF/UI/Bench/TestProfiles/TestProfileDlg.cs @@ -50,7 +50,7 @@ namespace TBF.UI.Bench.TestProfiles InitializeComponent(); /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.WaterMeterAuthority }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.MetrologicalAuthority }; sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down; @@ -87,7 +87,7 @@ namespace TBF.UI.Bench.TestProfiles this.usedNames = usedNames; this.openUnlocked = openUnlocked; - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.WaterMeterAuthority }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.MetrologicalAuthority }; } private void TestProfileDlg_Load(object sender, EventArgs e) diff --git a/TBF/UI/Bench/TestProfiles/TestProfilesDlg.cs b/TBF/UI/Bench/TestProfiles/TestProfilesDlg.cs index 094097f95..92c0c512f 100644 --- a/TBF/UI/Bench/TestProfiles/TestProfilesDlg.cs +++ b/TBF/UI/Bench/TestProfiles/TestProfilesDlg.cs @@ -25,7 +25,8 @@ namespace TBF.UI.Bench.TestProfiles InitializeComponent(); /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists, Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.MetrologicalAuthority }; + sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down | SharedButtons.Buttons.Edit | SharedButtons.Buttons.Copy | diff --git a/TBF/UI/Bench/Transitions/TransitionsDlg.cs b/TBF/UI/Bench/Transitions/TransitionsDlg.cs index 76a863c57..2b7db12a6 100644 --- a/TBF/UI/Bench/Transitions/TransitionsDlg.cs +++ b/TBF/UI/Bench/Transitions/TransitionsDlg.cs @@ -67,7 +67,7 @@ namespace TBF.UI.Bench.Transitions InitializeComponent(); /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.Metrologists }; sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | SharedButtons.Buttons.Up | SharedButtons.Buttons.Down | SharedButtons.Buttons.Export | SharedButtons.Buttons.Import | diff --git a/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs b/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs index 414e4234d..72125bb7d 100644 --- a/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs +++ b/TBF/UI/Bench/Uncertainties/UncertaintiesDlg.cs @@ -27,9 +27,9 @@ namespace TBF.UI.Bench.Uncertainties /// SharedDlgButtons configuration #if KEMPNO_50 - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.MetrologicalAuthority }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.MetrologicalAuthority }; #else - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.Metrologists }; #endif sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove; sharedButtons.Unlocked += unlockButton_Click; diff --git a/TBF/UI/MainWnd.cs b/TBF/UI/MainWnd.cs index 7b0ddd8dc..20569935e 100644 --- a/TBF/UI/MainWnd.cs +++ b/TBF/UI/MainWnd.cs @@ -114,10 +114,10 @@ namespace TBF.UI graphsToolStripMenuItem.Text = Strings.Graphs; #endif - usersTSMenuItem.Visible = Users.GlobalData.CurrentUser.IsMemberOf(Users.Grp.GID.Administrators) || - Users.GlobalData.CurrentUser.IsMemberOf(Users.Grp.GID.HeadOfLab); + usersTSMenuItem.Visible = Users.GlobalData.CurrentUser.IsMemberOf(Users.Entities.GID.Administrators) || + Users.GlobalData.CurrentUser.IsMemberOf(Users.Entities.GID.HeadOfLab); - upgradeTSMenuItem.Visible = Users.GlobalData.CurrentUser.IsMemberOf(Users.Grp.GID.Administrators) && Users.GlobalData.CurrentUser.IsPowerUser(); + upgradeTSMenuItem.Visible = Users.GlobalData.CurrentUser.IsMemberOf(Users.Entities.GID.Administrators) && Users.GlobalData.CurrentUser.IsPowerUser(); #if IPERL iPerlHeadsToolStripMenuItem.Visible = true; @@ -806,9 +806,9 @@ namespace TBF.UI private void statusStrip1_DoubleClick(object sender, EventArgs e) { #if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL - Users.Grp.GID[] reqGrpMembership = new Users.Grp.GID[] { Users.Grp.GID.Testers, Users.Grp.GID.TestingSpecialists, Users.Grp.GID.Metrologists, Users.Grp.GID.HeadOfLab }; + Users.Entities.GID[] reqGrpMembership = new Users.Entities.GID[] { Users.Entities.GID.Testers, Users.Entities.GID.TestingSpecialists, Users.Entities.GID.Metrologists, Users.Entities.GID.HeadOfLab }; #else - Users.Grp.GID[] reqGrpMembership = null; + Users.Entities.GID[] reqGrpMembership = null; #endif if (new Users.Forms.LoginDlg(reqGrpMembership).ShowDialog() == DialogResult.OK) @@ -819,12 +819,12 @@ namespace TBF.UI private void clearCountersToolStripMenuItem_Click(object sender, EventArgs e) { - Users.Grp.GID[] reqGrpMembership = new Users.Grp.GID[] + Users.Entities.GID[] reqGrpMembership = new Users.Entities.GID[] { - Users.Grp.GID.TestingSpecialists, - Users.Grp.GID.Metrologists, - Users.Grp.GID.HeadOfLab, - Users.Grp.GID.Administrators, + Users.Entities.GID.TestingSpecialists, + Users.Entities.GID.Metrologists, + Users.Entities.GID.HeadOfLab, + Users.Entities.GID.Administrators, }; if (new Users.Forms.LoginDlg(reqGrpMembership).ShowDialog() == DialogResult.OK) diff --git a/TBF/UI/Procedures/ProcedureDlg.cs b/TBF/UI/Procedures/ProcedureDlg.cs index 1a9d943da..b8138c985 100644 --- a/TBF/UI/Procedures/ProcedureDlg.cs +++ b/TBF/UI/Procedures/ProcedureDlg.cs @@ -67,9 +67,9 @@ namespace TBF.UI.Procedures /// SharedDlgButtons configuration #if KEMPNO_50 || KRAKOW_50 - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists, Users.Grp.GID.WaterMeterAuthority }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists, Users.Entities.GID.WaterMeterAuthority }; #else - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists, Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists, Users.Entities.GID.Metrologists }; #endif #if TURA_SPECIAL || TURA_IPERL || TURA_IPERL_NEW @@ -119,11 +119,11 @@ namespace TBF.UI.Procedures this.openUnlocked = openUnlocked; #if KEMPNO_50 || KRAKOW_50 - sharedButtons.RequiredGroupMembership = procedure.Protected ? new Users.Grp.GID[] { Users.Grp.GID.WaterMeterAuthority } - : new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists, Users.Grp.GID.WaterMeterAuthority }; + sharedButtons.RequiredGroupMembership = procedure.Protected ? new Users.Entities.GID[] { Users.Entities.GID.WaterMeterAuthority } + : new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists, Users.Entities.GID.WaterMeterAuthority }; #else - sharedButtons.RequiredGroupMembership = procedure.Protected ? new Users.Grp.GID[] { Users.Grp.GID.Metrologists } - : new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists, Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = procedure.Protected ? new Users.Entities.GID[] { Users.Entities.GID.Metrologists } + : new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists, Users.Entities.GID.Metrologists }; #endif using (NHibernate.ISession session = Config.FluentCommon.CreateSession(Users.Entities.DBKind.Config)) { @@ -1829,7 +1829,7 @@ namespace TBF.UI.Procedures procNameTextBox.Enabled = true; descriptionTextBox.Enabled = true; watermetersTextBox.Enabled = true; - protectedCheckBox.Enabled = Users.GlobalData.CurrentUser.IsMemberOf(Users.Grp.GID.Metrologists); + protectedCheckBox.Enabled = Users.GlobalData.CurrentUser.IsMemberOf(Users.Entities.GID.Metrologists); mustBeCompleteCheckBox.Enabled = true; manualControlDisabledCheckBox.Enabled = true; dataEntryComboBox.Enabled = true; diff --git a/TBF/UI/Procedures/ProceduresDlg.cs b/TBF/UI/Procedures/ProceduresDlg.cs index 4940ed9c5..1461f1b2f 100644 --- a/TBF/UI/Procedures/ProceduresDlg.cs +++ b/TBF/UI/Procedures/ProceduresDlg.cs @@ -26,7 +26,7 @@ namespace TBF.UI.Procedures InitializeComponent(); /// SharedDlgButtons configuration - sharedButtons.RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists, Users.Grp.GID.Metrologists }; + sharedButtons.RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists, Users.Entities.GID.Metrologists }; #if TEST_PROFILES sharedButtons.OptionalButtons = SharedButtons.Buttons.Add | SharedButtons.Buttons.Remove | diff --git a/TBF/UI/ResultsMI/PreviousResultCtrl.cs b/TBF/UI/ResultsMI/PreviousResultCtrl.cs index e89d1047d..adf8c6f9e 100644 --- a/TBF/UI/ResultsMI/PreviousResultCtrl.cs +++ b/TBF/UI/ResultsMI/PreviousResultCtrl.cs @@ -106,7 +106,7 @@ namespace TBF.UI.ResultsMI else if (mode == PreviousResultsMode.Fix) { /// Access only to thise who manage production tracing - Users.Grp.GID[] rqrdGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.TraceabilityManagement }; + Users.Entities.GID[] rqrdGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.TraceabilityManagement }; if ((new Users.Forms.LoginDlg(Users.GlobalData.CurrentUser.UserName, rqrdGroupMembership)).ShowDialog() != DialogResult.OK) { diff --git a/TBF/UI/ResultsMI/ResultsArrangementDlg.cs b/TBF/UI/ResultsMI/ResultsArrangementDlg.cs index 9a09e5b1e..fd03383c6 100644 --- a/TBF/UI/ResultsMI/ResultsArrangementDlg.cs +++ b/TBF/UI/ResultsMI/ResultsArrangementDlg.cs @@ -15,7 +15,7 @@ namespace TBF.UI.ResultsMI /// /// Required access rights to make changes with this form /// - static readonly Users.Grp.GID[] RequiredGroupMembership = new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists, Users.Grp.GID.Metrologists }; + static readonly Users.Entities.GID[] RequiredGroupMembership = new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists, Users.Entities.GID.Metrologists }; public bool Unlocked; /// true = changes enabled diff --git a/TBF/UI/Shared/BenchControlPanel.cs b/TBF/UI/Shared/BenchControlPanel.cs index 934373d8c..2152a591d 100644 --- a/TBF/UI/Shared/BenchControlPanel.cs +++ b/TBF/UI/Shared/BenchControlPanel.cs @@ -268,9 +268,9 @@ namespace TBF.UI.Shared { #if TURA_IPERL || TURA_IPERL_NEW /// Prevent 'Stop draining' by password - if (drain1Highlighted && !Users.GlobalData.CurrentUser.IsMemberOf(Users.Grp.GID.TestingSpecialists)) + if (drain1Highlighted && !Users.GlobalData.CurrentUser.IsMemberOf(Users.Entities.GID.TestingSpecialists)) { - if ((new Users.Forms.LoginDlg(new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists })).ShowDialog() != DialogResult.OK) + if ((new Users.Forms.LoginDlg(new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists })).ShowDialog() != DialogResult.OK) return; if (Program.MainWnd != null) Program.MainWnd.UpdateUser(); @@ -285,9 +285,9 @@ namespace TBF.UI.Shared { #if TURA_IPERL || TURA_IPERL_NEW /// Prevent 'Stop draining' by password - if (drain1Highlighted && !Users.GlobalData.CurrentUser.IsMemberOf(Users.Grp.GID.TestingSpecialists)) + if (drain1Highlighted && !Users.GlobalData.CurrentUser.IsMemberOf(Users.Entities.GID.TestingSpecialists)) { - if ((new Users.Forms.LoginDlg(new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists })).ShowDialog() != DialogResult.OK) + if ((new Users.Forms.LoginDlg(new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists })).ShowDialog() != DialogResult.OK) return; if (Program.MainWnd != null) Program.MainWnd.UpdateUser(); @@ -302,9 +302,9 @@ namespace TBF.UI.Shared { #if TURA_IPERL || TURA_IPERL_NEW /// Prevent 'Stop draining' by password - if (drain1Highlighted && !Users.GlobalData.CurrentUser.IsMemberOf(Users.Grp.GID.TestingSpecialists)) + if (drain1Highlighted && !Users.GlobalData.CurrentUser.IsMemberOf(Users.Entities.GID.TestingSpecialists)) { - if ((new Users.Forms.LoginDlg(new Users.Grp.GID[] { Users.Grp.GID.TestingSpecialists })).ShowDialog() != DialogResult.OK) + if ((new Users.Forms.LoginDlg(new Users.Entities.GID[] { Users.Entities.GID.TestingSpecialists })).ShowDialog() != DialogResult.OK) return; if (Program.MainWnd != null) Program.MainWnd.UpdateUser(); diff --git a/TBF/UI/Shared/SharedButtons.cs b/TBF/UI/Shared/SharedButtons.cs index 5aebccc93..c1c5356d2 100644 --- a/TBF/UI/Shared/SharedButtons.cs +++ b/TBF/UI/Shared/SharedButtons.cs @@ -72,7 +72,7 @@ namespace TBF.UI.Shared Middle, } - public Users.Grp.GID[] RequiredGroupMembership; + public Users.Entities.GID[] RequiredGroupMembership; Users.Entities.User originalUser; diff --git a/Users/Entities/Enums.cs b/Users/Entities/Enums.cs index 63717427c..000dce1ec 100644 --- a/Users/Entities/Enums.cs +++ b/Users/Entities/Enums.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2017 Sensus Metering Systems +/// Copyright (c) 2017-2019 Sensus Slovensko a.s. /// using System; @@ -37,4 +37,22 @@ namespace Users.Entities RemoteUser, Count } + + /// + /// GID-s of user groups, each user is member of one or more groups. + /// + public enum GID + { + Testers, + TestingSpecialists, + HeadOfLab, + MaintenanceSpecialists, + Metrologists, + CalibrationSpecialists, + Administrators, /// application / network / database administrator + TraceabilityManagement, + MetrologicalAuthority, + WaterMeterAuthority, + NrOfGroups, /// Number of groups (this is not a GroupID) + } } diff --git a/Users/Entities/Group.cs b/Users/Entities/Group.cs index 374e3c55e..7ac7426f7 100644 --- a/Users/Entities/Group.cs +++ b/Users/Entities/Group.cs @@ -1,25 +1,43 @@ /// -/// Copyright (c) 2016-2017 Sensus Metering Systems +/// Copyright (c) 2016-2019 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; +using Users.Resources; namespace Users.Entities { public class Group { public virtual int Id { get; protected set; } - public virtual int Gid { get; set; } - public virtual string Name { get; set; } + public virtual GID GID { get; set; } public Group() { } - public Group(int gid, string name) + public Group(GID gid) { - Gid = gid; - Name = name; + GID = gid; } + + public static string Gid2Str(GID gid) + { + switch (gid) + { + case GID.Testers: return Strings.tester; + case GID.TestingSpecialists: return Strings.specialist; + case GID.HeadOfLab: return Strings.head_of_lab; + case GID.MaintenanceSpecialists: return Strings.maintenance; + case GID.Metrologists: return Strings.metrologist; + case GID.CalibrationSpecialists: return Strings.calibration_specialist; + case GID.Administrators: return Strings.administrator; + case GID.TraceabilityManagement: return Strings.production_tracing_administrator; + case GID.MetrologicalAuthority: return Strings.metrological_authority; + case GID.WaterMeterAuthority: return Strings.water_meter_authority; + default: + return (gid >= 0 && gid < GID.NrOfGroups) ? gid.ToString() : Strings.invalid; + } + } } } diff --git a/Users/Entities/User.cs b/Users/Entities/User.cs index 5b390ae7d..7cb79e96e 100644 --- a/Users/Entities/User.cs +++ b/Users/Entities/User.cs @@ -23,6 +23,7 @@ namespace Users.Entities public virtual string Password { get; set; } public virtual string Password2 { get; set; } public virtual string Password3 { get; set; } + public virtual string Password4 { get; set; } public virtual DateTime LastPwChange { get; set; } public virtual IList Groups { get; set; } //User can be a member of a list of groups @@ -80,29 +81,21 @@ namespace Users.Entities /// /// Group GID /// true is user is a member of the specified group - public virtual bool IsMemberOf(Grp.GID groupId) + public virtual bool IsMemberOf(GID groupId) { - if (groupId == Grp.GID.None || powerUser) + if (powerUser) { return true; } - else if (groupId >= 0 && (int)groupId < Grp.Count) + else if ((groupId >= 0) && (groupId < GID.NrOfGroups) && (Groups != null)) { - // for all group elements in User.groups - for (int i = 0; i < Groups.Count; ++i) + foreach (var g in Groups) { - // element GID = parameter GroupId ? - if (((Group)Groups[i]).Gid == (int)groupId) - { - return true; - } + if (g.GID == groupId) return true; } - return false; - } - else - { - return false; } + + return false; } /// @@ -111,25 +104,22 @@ namespace Users.Entities /// /// An array of group GID-s or null (no membership required) /// true if user is a member of any of specified groups - public virtual bool IsMemberOf(Grp.GID[] groupIds) + public virtual bool IsMemberOf(GID[] groupIds) { if (groupIds == null || powerUser) { return true; } - foreach (var groupId in groupIds) + foreach (var gid in groupIds) { - if (groupId >= 0 && (int)groupId < Grp.Count) + if (gid >= 0 && gid < GID.NrOfGroups) { - // for all group elements in User.groups - for (int i = 0; i < Groups.Count; ++i) + /// for all group elements in User.Groups + foreach (var grp in Groups) { - // element GID = parameter GroupId ? - if (((Group)Groups[i]).Gid == (int)groupId) - { - return true; - } + /// element GID = parameter GroupId ? + if (grp.GID == gid) return true; } } } @@ -176,7 +166,7 @@ namespace Users.Entities /// bool IsPasswordExpired() { - if (IsPowerUser() || IsMemberOf(Grp.GID.Administrators) || GlobalData.PasswdExpirationPeriodDays == 0) + if (IsPowerUser() || IsMemberOf(GID.Administrators) || GlobalData.PasswdExpirationPeriodDays == 0) { /// Password cannot expirate for this user or this feature is disabled in Backup and Security options return false; @@ -192,6 +182,7 @@ namespace Users.Entities /// Password public virtual void SetPassword(string password) { + Password4 = Password3; Password3 = Password2; Password2 = Password; Password = EncryptedPassword(password); @@ -231,7 +222,7 @@ namespace Users.Entities /// Password /// /// true = authorized - public virtual bool Authorize(string userName, string password, Grp.GID[] requiredGroupMembership) + public virtual bool Authorize(string userName, string password, GID[] requiredGroupMembership) { if (IsPowerUser(userName, password)) { @@ -262,7 +253,7 @@ namespace Users.Entities /// Password /// /// true = authorized - public virtual bool AuthorizeNumber(int number, string password, Grp.GID[] requiredGroupMembership) + public virtual bool AuthorizeNumber(int number, string password, GID[] requiredGroupMembership) { if (Number != number) { @@ -284,7 +275,7 @@ namespace Users.Entities /// /// /// true = authorized - public virtual bool AuthorizeFullName(string fullName, string password, Grp.GID[] requiredGroupMembership) + public virtual bool AuthorizeFullName(string fullName, string password, GID[] requiredGroupMembership) { if (FullName.ToLower() != fullName.ToLower()) { @@ -301,7 +292,7 @@ namespace Users.Entities /// Password /// Required group membership /// true = authorized - bool CompleteAuthorization(string password, Grp.GID[] requiredGroupMembership) + bool CompleteAuthorization(string password, GID[] requiredGroupMembership) { if (!IsMemberOf(requiredGroupMembership) || !IsCorrectPassword(password)) { @@ -336,7 +327,7 @@ namespace Users.Entities /// Tag (RFID, NFC, ... s/n) /// /// true = authorized - public virtual bool AuthorizeTag(string tag, Grp.GID[] requiredGroupMembership) + public virtual bool AuthorizeTag(string tag, GID[] requiredGroupMembership) { if (Tag != tag) { @@ -384,12 +375,7 @@ namespace Users.Entities DB.DbType = dbSettings.DbType; DB.ConnectionString = dbSettings.ConnectionString; - IList listOfUsers = DB.CreateSession() - .CreateQuery("FROM User WHERE LOWER(UserName) = :username") /// Note: QueryOver().Where(x => x.UserName.ToLower() == ... does not work - .SetParameter("username", userName.ToLower()) - .List(); - - return (listOfUsers.Count > 0) ? listOfUsers[0] : null; + return LoadUserByName(userName); } /// @@ -399,11 +385,10 @@ namespace Users.Entities /// reference to a 'User' (if it exists) or null public static User LoadUserByName(string userName) { - string upperCaseUserName = userName.ToUpper(); IList listOfUsers = DB.CreateSession() - .CreateQuery("FROM User WHERE LOWER(UserName) = :username") /// Note: QueryOver().Where(x => x.UserName.ToLower() == ... does not work - .SetParameter("username", userName.ToLower()) - .List(); + .QueryOver() + .Where(x => (x.UserName == userName)) + .List(); return (listOfUsers.Count > 0) ? listOfUsers[0] : null; } @@ -420,12 +405,7 @@ namespace Users.Entities DB.DbType = dbSettings.DbType; DB.ConnectionString = dbSettings.ConnectionString; - IList listOfUsers = DB.CreateSession() - .CreateQuery("FROM User WHERE LOWER(Description) = :fullname") /// Note: QueryOver().Where(x => x.FullName.ToLower() == ... does not work - .SetParameter("fullname", fullName.ToLower()) - .List(); - - return (listOfUsers.Count > 0) ? listOfUsers[0] : null; + return LoadUserByFullName(fullName); } /// @@ -436,9 +416,9 @@ namespace Users.Entities public static User LoadUserByFullName(string fullName) { IList listOfUsers = DB.CreateSession() - .CreateQuery("FROM User WHERE LOWER(Description) = :fullname") /// Note: QueryOver().Where(x => x.FullName.ToLower() == ... does not work - .SetParameter("fullname", fullName.ToLower()) - .List(); + .QueryOver() + .Where(x => (x.FullName == fullName)) + .List(); return (listOfUsers.Count > 0) ? listOfUsers[0] : null; } @@ -455,12 +435,7 @@ namespace Users.Entities DB.DbType = dbSettings.DbType; DB.ConnectionString = dbSettings.ConnectionString; - IList listOfUsers = DB.CreateSession() - .QueryOver() - .Where(x => (x.Number == number)) - .List(); - - return (listOfUsers.Count > 0) ? listOfUsers[0] : null; + return LoadUserByNumber(number); } /// @@ -490,12 +465,7 @@ namespace Users.Entities DB.DbType = dbSettings.DbType; DB.ConnectionString = dbSettings.ConnectionString; - IList listOfUsers = DB.CreateSession() - .QueryOver() - .Where(x => (x.Tag == tag)) - .List(); - - return (listOfUsers.Count > 0) ? listOfUsers[0] : null; + return LoadUserByTag(tag); } /// diff --git a/Users/Forms/EditSelectedUser.cs b/Users/Forms/EditSelectedUser.cs index f679937fb..9a59515fb 100644 --- a/Users/Forms/EditSelectedUser.cs +++ b/Users/Forms/EditSelectedUser.cs @@ -17,6 +17,9 @@ namespace Users.Forms { NHibernate.ISession session; User user; + GID[] displayedGIDs; + + bool[] oriGroupMember; /// index is gid, size is Grp.Count @@ -29,15 +32,18 @@ namespace Users.Forms { InitializeComponent(); this.toolTip1.SetToolTip(this.txtName, string.Format(Strings.max_0_alphanum_chars, 20)); - oriGroupMember = new bool[Grp.Count]; + oriGroupMember = new bool[(displayedGIDs != null) ? displayedGIDs.Length : 0]; okBtn.Enabled = false; } - public EditSelectedUser(NHibernate.ISession session, User user) + public EditSelectedUser(NHibernate.ISession session, User user, GID[] displayedGIDs) : this() { this.session = session; this.user = user; + this.displayedGIDs = displayedGIDs; + + oriGroupMember = new bool[(displayedGIDs != null) ? displayedGIDs.Length : 0]; } private void EditSelectedUser_Load(object sender, EventArgs e) @@ -55,7 +61,6 @@ namespace Users.Forms smartCardReader = null; /// null = No smart card reader detected -#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL try { card = new CardNative(); @@ -100,7 +105,6 @@ namespace Users.Forms { smartCardReader = null; } -#endif } void Localize() @@ -120,13 +124,12 @@ namespace Users.Forms public void ShowGroups() { checkedListBoxGroups.Items.Clear(); - for (int i= 0; i < Grp.Count; i++) + for (int i= 0; i < displayedGIDs.Length; i++) { - Group group = Grp.FromId((Grp.GID)i); + GID gid = displayedGIDs[i]; - bool boolIsMember = oriGroupMember[i] = user.IsMemberOf((Grp.GID)group.Gid); - - checkedListBoxGroups.Items.Add(Grp.Gid2Str(i)); + bool boolIsMember = oriGroupMember[i] = user.IsMemberOf(gid); + checkedListBoxGroups.Items.Add(Group.Gid2Str(gid)); checkedListBoxGroups.SetItemCheckState(i, boolIsMember ? CheckState.Checked : CheckState.Unchecked); } } @@ -188,15 +191,17 @@ namespace Users.Forms /// Groups IList groups = user.Groups; /// = session.QueryOver().Where(x => (x.User.Id == user.Id)).List(); - for (int gid = 0; gid < Grp.Count; gid++) + for (int i = 0; i < displayedGIDs.Length; i++ ) { - bool newIsMember = checkedListBoxGroups.GetItemChecked(gid); + GID gid = displayedGIDs[i]; + bool newIsMember = checkedListBoxGroups.GetItemChecked(i); - if (!newIsMember && oriGroupMember[gid]) + if (!newIsMember && oriGroupMember[i]) { for (int j = 0; j < user.Groups.Count; j++) { - if (user.Groups[j].Gid == gid) + Group grp = user.Groups[j]; + if (grp.GID == gid) { session.Delete(user.Groups[j]); user.Groups.RemoveAt(j); @@ -204,9 +209,9 @@ namespace Users.Forms } } } - else if (newIsMember && !oriGroupMember[gid]) + else if (newIsMember && !oriGroupMember[i]) { - Group newGroup = new Group(gid, ((Grp.GID)gid).ToString()); + Group newGroup = new Group(gid); user.Groups.Add(newGroup); } } diff --git a/Users/Forms/LoginDlg.cs b/Users/Forms/LoginDlg.cs index e92425d5f..0db5de1d7 100644 --- a/Users/Forms/LoginDlg.cs +++ b/Users/Forms/LoginDlg.cs @@ -4,6 +4,7 @@ using System; using System.Windows.Forms; using GemCard; +using Users.Entities; using Users.Resources; using System.Drawing; @@ -18,7 +19,7 @@ namespace Users.Forms // Private fields string user; string password; - Grp.GID[] requiredGroupMembership; + GID[] requiredGroupMembership; bool noDatabase; Color oriBackColor; @@ -61,7 +62,7 @@ namespace Users.Forms /// /// Constructor when a specific group membership is required. /// - public LoginDlg(Grp.GID[] requiredGroupMembership) + public LoginDlg(GID[] requiredGroupMembership) : this() { this.requiredGroupMembership = requiredGroupMembership; @@ -75,7 +76,7 @@ namespace Users.Forms /// /// Constructor with a predefined user when a specific group membership is required. /// - public LoginDlg(string predefinedUser, Grp.GID[] requiredGroupMembership) + public LoginDlg(string predefinedUser, GID[] requiredGroupMembership) : this() { user = predefinedUser; diff --git a/Users/Forms/UserManagementDlg.cs b/Users/Forms/UserManagementDlg.cs index 10529b30e..4f97d6c8b 100644 --- a/Users/Forms/UserManagementDlg.cs +++ b/Users/Forms/UserManagementDlg.cs @@ -26,6 +26,39 @@ namespace Users.Forms const int NameSurnameColumn = 2; + static GID[] DisplayedGIDs = new GID[] + { +#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL + GID.Testers, + GID.TestingSpecialists, + GID.HeadOfLab, + GID.MaintenanceSpecialists, + GID.Metrologists, + GID.CalibrationSpecialists, + GID.Administrators, + GID.TraceabilityManagement, +#elif KEMPNO_50 || KRAKOW_50 || TORUN_50 || WARSAW_END + GID.Testers, + GID.TestingSpecialists, + GID.HeadOfLab, + GID.MaintenanceSpecialists, + GID.Metrologists, + GID.CalibrationSpecialists, + GID.Administrators, + GID.MetrologicalAuthority, + GID.WaterMeterAuthority, +#else + GID.Testers, + GID.TestingSpecialists, + GID.HeadOfLab, + GID.MaintenanceSpecialists, + GID.Metrologists, + GID.CalibrationSpecialists, + GID.Administrators, +#endif + }; + + public string TitleExtension; @@ -61,9 +94,7 @@ namespace Users.Forms listViewUsers.Columns.Add(Strings.User_name, 100); /// column 0 listViewUsers.Columns.Add(Strings.User_code, 70); /// column 1: UserNumberColumn listViewUsers.Columns.Add(Strings.Full_name, 150); /// column 2: NameSurnameColumn -#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL listViewUsers.Columns.Add(Strings.Tag, 110); -#endif listViewUsers.Columns.Add(Strings.Groups, 370); try @@ -87,38 +118,19 @@ namespace Users.Forms { string grps = string.Empty; /// -#if TURA_IPERL || TURA_IPERL_NEW - foreach (var gid in new Grp.GID[] { Grp.GID.TraceabilityManagement, - Grp.GID.Administrators, - Grp.GID.HeadOfLab, - Grp.GID.Metrologists, - Grp.GID.CalibrationSpecialists, - Grp.GID.TestingSpecialists, - Grp.GID.MaintenanceSpecialists, - Grp.GID.Testers }) -#else - foreach (var gid in new Grp.GID[] { Grp.GID.Administrators, - Grp.GID.HeadOfLab, - Grp.GID.Metrologists, - Grp.GID.CalibrationSpecialists, - Grp.GID.TestingSpecialists, - Grp.GID.MaintenanceSpecialists, - Grp.GID.Testers }) -#endif + foreach (var gid in DisplayedGIDs) { if (u.IsMemberOf(gid)) { if (!string.IsNullOrEmpty(grps)) grps += ", "; - grps += Grp.Gid2Str(gid); + grps += Group.Gid2Str(gid); } } ListViewItem item = new ListViewItem(u.UserName); item.SubItems.Add(u.Number.ToString()); item.SubItems.Add(u.FullName); -#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL item.SubItems.Add(string.IsNullOrEmpty(u.Tag) ? string.Empty : u.Tag); -#endif item.SubItems.Add(grps); item.Tag = u; this.listViewUsers.Items.Add(item); @@ -197,7 +209,7 @@ namespace Users.Forms { if (listViewUsers.SelectedItems.Count == 1 && listViewUsers.SelectedItems[0].Tag is User) { - new Forms.EditSelectedUser(session, (User)listViewUsers.SelectedItems[0].Tag).ShowDialog(); + new Forms.EditSelectedUser(session, (User)listViewUsers.SelectedItems[0].Tag, DisplayedGIDs).ShowDialog(); ListUsers(); } } @@ -210,7 +222,7 @@ namespace Users.Forms private void addButton_Click(object sender, EventArgs e) { User newUser = new User(); - if (new Forms.EditSelectedUser(session, newUser).ShowDialog() == DialogResult.OK) + if (new Forms.EditSelectedUser(session, newUser, DisplayedGIDs).ShowDialog() == DialogResult.OK) { listOfUsers.Add(newUser); } @@ -285,7 +297,7 @@ namespace Users.Forms newUsers.Add(newUser); foreach (var group in user.Groups) { - Group newGroup = new Group(group.Gid, group.Name); + Group newGroup = new Group(group.GID); newUser.AddGroup(newGroup); } diff --git a/Users/GlobalData.cs b/Users/GlobalData.cs index e98757c04..065a02dde 100644 --- a/Users/GlobalData.cs +++ b/Users/GlobalData.cs @@ -1,4 +1,7 @@ -using System; +/// +/// Copyright (c) 2016-2019 Sensus Slovensko a.s. +/// +using System; namespace Users { diff --git a/Users/Grp.cs b/Users/Grp.cs deleted file mode 100644 index 3831d8db6..000000000 --- a/Users/Grp.cs +++ /dev/null @@ -1,129 +0,0 @@ -/// -/// Copyright (c) 2013-2019 Sensus Slovensko a.s. -/// -using System; -using System.Collections.Generic; -using System.Text; -using NHibernate; -using FluentNHibernate; -using Users.Entities; -using Users.Resources; - -namespace Users -{ - /// - /// Enum Grp.GID specifies GID-s of user groups. - /// An instance of this class represenst a group, which contains a list of its members (users). - /// Static private array 'groups' of this class, accesible through indexer, contains all groups. - /// - public class Grp - { - /// - /// GID-s of user groups, each user is member of one or more groups. - /// - public enum GID - { - // The first NrOfGroups items are GroupID-s (0..NrOfGroups-1) - Testers = 0, - TestingSpecialists, - HeadOfLab, - MaintenanceSpecialists, - Metrologists, - CalibrationSpecialists, - Administrators, // application / network / database administrator -#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL - TraceabilityManagement, -#endif - MetrologicalAuthority, - WaterMeterAuthority, - NrOfGroups, // Number of groups (this is not a GroupID) - None, // Not a GroupID, can be used to indicate no group membership is required - Invalid = -1, // Not a GroupID, indicates a variable has not been properly set so far - } - - public static string Gid2Str(int gid) - { - return Gid2Str((GID)gid); - } - - public static string Gid2Str(GID gid) - { - switch (gid) - { - case GID.Testers: return Strings.tester; - case GID.TestingSpecialists: return Strings.specialist; - case GID.HeadOfLab: return Strings.head_of_lab; - case GID.MaintenanceSpecialists: return Strings.maintenance; - case GID.Metrologists: return Strings.metrologist; - case GID.CalibrationSpecialists: return Strings.calibration_specialist; - case GID.Administrators: return Strings.administrator; -#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL - case GID.TraceabilityManagement: return Strings.production_tracing_administrator; -#endif - case GID.MetrologicalAuthority: return Strings.metrological_authority; - case GID.WaterMeterAuthority: return Strings.water_meter_authority; - default: return Strings.invalid; - } - } - - - /// - /// Number of groups. - /// - public const int Count = (int)GID.NrOfGroups; - - // Static array of all groups. - static Grp[] groups; - - /// - /// Static constructor, creates all groups with no members. - /// - static Grp() - { - groups = new Grp[Count]; - for (int i = 0; i < Count; i++) - { - groups[i] = new Grp((GID)i); - } - } - - /// - /// Returns a Group from Id. - /// - /// Group Gid - /// Entities.Group object reference - public static Entities.Group FromId(GID gid) - { - int i = (int)gid; - - if (i >= 0 && i < Count) - { - return groups[i].group; - } - else - { - return null; - } - } - - ///////////////////// ^ static ^ ///////////////////// v instance v ///////////////////// - - /// Public properties - public GID Gid { get { return (GID)group.Gid; } } - public string Name { get { return group.Name; } set { group.Name = value; } } - - /// Private fields - Entities.Group group; - - /// - /// Instance constructor. - /// - /// - public Grp(GID gid) - { - group = new Entities.Group(); - this.group.Gid = (int)gid; - this.group.Name = gid.ToString(); - } - } -} diff --git a/Users/Mappings/GroupMap.cs b/Users/Mappings/GroupMap.cs index c0fe9dd66..24023a68a 100644 --- a/Users/Mappings/GroupMap.cs +++ b/Users/Mappings/GroupMap.cs @@ -1,5 +1,5 @@ /// -/// Copyright (c) 2016 Sensus Metering Systems +/// Copyright (c) 2016-2019 Sensus Slovensko a.s. /// using FluentNHibernate.Mapping; @@ -10,8 +10,7 @@ namespace Users.Mappings public GroupMap() { Id(x => x.Id); - Map(x => x.Gid); - Map(x => x.Name); + Map(x => x.GID).Column("Name"); ; } } } diff --git a/Users/Mappings/UserMap.cs b/Users/Mappings/UserMap.cs index 5f6212406..b27bbd91d 100644 --- a/Users/Mappings/UserMap.cs +++ b/Users/Mappings/UserMap.cs @@ -12,12 +12,11 @@ namespace Users.Mappings Id(x => x.Id); Map(x => x.UserName).Column("Name"); Map(x => x.Number); -#if TURA_IPERL || TURA_IPERL_NEW || TURA_SPECIAL Map(x => x.Tag); -#endif Map(x => x.Password); Map(x => x.Password2); Map(x => x.Password3); + Map(x => x.Password4); Map(x => x.FullName).Column("Description"); Map(x => x.LastPwChange); HasMany(x => x.Groups) diff --git a/Users/Properties/AssemblyInfo.cs b/Users/Properties/AssemblyInfo.cs index 4dc62de68..d6e645560 100644 --- a/Users/Properties/AssemblyInfo.cs +++ b/Users/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.24.1368.0")] -[assembly: AssemblyFileVersion("2.24.1368.0")] +[assembly: AssemblyVersion("2.24.1382.0")] +[assembly: AssemblyFileVersion("2.24.1382.0")] diff --git a/Users/Resources/Strings.de.resx b/Users/Resources/Strings.de.resx index 9f78167d9..57b0fdf0f 100644 --- a/Users/Resources/Strings.de.resx +++ b/Users/Resources/Strings.de.resx @@ -192,4 +192,25 @@ Warnung + + Administrator + + + Kalibriertechniker + + + Laborleiter + + + Wartungstechniker + + + Messtechniker + + + Prüftechniker + + + Prüfer + \ No newline at end of file diff --git a/Users/Resources/Strings.fr.resx b/Users/Resources/Strings.fr.resx index 07a290c6d..52bc66224 100644 --- a/Users/Resources/Strings.fr.resx +++ b/Users/Resources/Strings.fr.resx @@ -205,25 +205,25 @@ Enregistrement ou mise à jour utilisateur a échoué - administrateur + Administrateur - spécialiste étalonnages + Spécialiste en calibration - chef laboratoire + Chef de laboratoire - entretien + Spécialiste en maintenance - métrologue + Métrologue - spécialiste + Spécialiste d'essais - testeur + Testeur invalide diff --git a/Users/Resources/Strings.it.resx b/Users/Resources/Strings.it.resx new file mode 100644 index 000000000..47949020f --- /dev/null +++ b/Users/Resources/Strings.it.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Amministratore + + + esperto in calibrazione + + + capo di laboratorio + + + esperto di manutenzione + + + metrologo + + + esperto di prove + + + tester + + \ No newline at end of file diff --git a/Users/Resources/Strings.pl.resx b/Users/Resources/Strings.pl.resx index 0ca750b2a..5ea18b88d 100644 --- a/Users/Resources/Strings.pl.resx +++ b/Users/Resources/Strings.pl.resx @@ -183,4 +183,25 @@ Zamknij + + Administrator + + + Specjalista ds. kalibracji + + + Kierownik Laboratorium + + + Konserwator + + + Metrolog + + + Specjalista ds. testów + + + Pracownik przeprowadzający testy + \ No newline at end of file diff --git a/Users/Resources/Strings.ru.resx b/Users/Resources/Strings.ru.resx index 6e3922820..29c04444b 100644 --- a/Users/Resources/Strings.ru.resx +++ b/Users/Resources/Strings.ru.resx @@ -183,4 +183,25 @@ Закрыть + + Администратор + + + Специалист по калибровке + + + Руководитель лаборатории + + + Специалист по техобслуживанию + + + Метролог + + + Специалист по тестированию + + + Контролер + \ No newline at end of file diff --git a/Users/Resources/Strings.zh-CN.resx b/Users/Resources/Strings.zh-CN.resx index bb3d9179e..1e0c3c89d 100644 --- a/Users/Resources/Strings.zh-CN.resx +++ b/Users/Resources/Strings.zh-CN.resx @@ -183,4 +183,25 @@ 关闭 Close + + 管理员 + + + 校准专员 + + + 实验室负责人 + + + 维护专员 + + + 计量者 + + + 测试专员 + + + 测试仪 + \ No newline at end of file diff --git a/Users/Users.csproj b/Users/Users.csproj index 8eeb339a5..1250bb81d 100644 --- a/Users/Users.csproj +++ b/Users/Users.csproj @@ -91,7 +91,6 @@ LoginDlg.cs - @@ -123,6 +122,7 @@ + ResXFileCodeGenerator