diff --git a/server/AyaNova/biz/UserBiz.cs b/server/AyaNova/biz/UserBiz.cs index cb821e24..f66942eb 100644 --- a/server/AyaNova/biz/UserBiz.cs +++ b/server/AyaNova/biz/UserBiz.cs @@ -159,15 +159,15 @@ namespace AyaNova.Biz dbObj.Salt = SnapshotOfOriginalDBObj.Salt; } //Updating login? - if (!string.IsNullOrWhiteSpace(inObj.Login)) + if (!string.IsNullOrWhiteSpace(inObj.Login)) { //YES Login is being updated: - dbObj.Login=inObj.Login; + dbObj.Login = inObj.Login; } else { //No, use the original value - dbObj.Login = SnapshotOfOriginalDBObj.Login; + dbObj.Login = SnapshotOfOriginalDBObj.Login; } @@ -212,16 +212,16 @@ namespace AyaNova.Biz dbObj.Password = Hasher.hash(dbObj.Salt, dbObj.Password); } - //Updating login? - if (!string.IsNullOrWhiteSpace(dbObj.Login) && dbObj.Login != SnapshotOfOriginalDBObj.Login) + //Updating login? + if (!string.IsNullOrWhiteSpace(dbObj.Login) && dbObj.Login != SnapshotOfOriginalDBObj.Login) { //YES Login is being updated: - dbObj.Login=SnapshotOfOriginalDBObj.Login; + dbObj.Login = SnapshotOfOriginalDBObj.Login; } else { //No, use the original value - dbObj.Login = SnapshotOfOriginalDBObj.Login; + dbObj.Login = SnapshotOfOriginalDBObj.Login; } ct.Entry(dbObj).OriginalValues["ConcurrencyToken"] = concurrencyToken; @@ -364,7 +364,11 @@ namespace AyaNova.Biz } } - + //LOGIN must be unique + if (await ct.User.AnyAsync(m => m.Login == proposedObj.Login && m.Id != proposedObj.Id)) + { + AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "Login"); + } //TODO: Validation rules that require future other objects that aren't present yet: /* diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index ce3959f1..5f55dbdc 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -23,7 +23,7 @@ namespace AyaNova.Util private const int DESIRED_SCHEMA_LEVEL = 11; internal const long EXPECTED_COLUMN_COUNT = 272; - internal const long EXPECTED_INDEX_COUNT = 118; + internal const long EXPECTED_INDEX_COUNT = 119; //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! @@ -170,7 +170,7 @@ namespace AyaNova.Util //Add user table await ExecQueryAsync("CREATE TABLE auser (id BIGSERIAL PRIMARY KEY, active bool not null, name varchar(255) not null unique, " + - "login text not null, password text not null, salt text not null, roles integer not null, currentauthtoken text, " + + "login text not null unique, password text not null, salt text not null, roles integer not null, currentauthtoken text, " + "dlkey text, dlkeyexpire timestamp, usertype integer not null, employeenumber varchar(255), notes text, customerid bigint, " + "headofficeid bigint, subvendorid bigint, wiki text null, customfields text, tags varchar(255) ARRAY)");