public ActionResult Create(RegisterViewModel registerModel) { if (ModelState.IsValid) { bool errors = false; // custom validation if (!registerModel.Password.Equals(registerModel.PasswordRepeat) || String.IsNullOrEmpty(registerModel.Password.Trim())) { ModelState.AddModelError("passwordsUnequal", "Die Passwörter stimmen nicht überein."); errors = true; } if (!_service.IsEmailAvailable(registerModel.EmailAddress)) { ModelState.AddModelError("duplicatedEmail", "Die angegebene E-Mail Adresse wird bereits verwendet."); errors = true; } // save user if no errors ocurred if (!errors) { ml_User userObject = new ml_User(); userObject.userStatus = (int)Util.Enum.UserStatus.DefaultUser; userObject.userPassword = new UtilityService().GetMd5Hash(registerModel.Password); userObject.userName = registerModel.UserName; userObject.userEmail = registerModel.EmailAddress; userObject.CRDT = DateTime.Now; _service.Save(userObject); _unitOfWork.SaveChanges(); return View("UserCreated"); } } return View(); }
/// <summary> /// Konstruktor, der die Daten aus einem UserModel-Object ausliest /// </summary> /// <param name="model">UserModel-Object, aus dem die Daten für das UserInfoSettings-Model ausgelesen werden sollen</param> public UserInfoSettings(ml_User model) { UserName = model.userName; FirstName = model.firstName; LastName = model.lastName; Birthday = ((DateTime) (model.birthday ?? DateTime.MinValue ) ).ToShortDateString( ); }
/// <summary> /// gets the rights of a user concerning the exercise library /// </summary> /// <param name="user">ml_User object</param> /// <param name="minRepLevel">the minimum reputation level a (non-admin) user needs to be able to edit exercises</param> /// <returns>an instance of the Enum.Rights enumeration indicating the user's rights</returns> public muscle_log.framework.Util.Enum.Rights ExerciseAccess(ml_User user, int minRepLevel) { if (user.userStatus == (int)muscle_log.framework.Util.Enum.UserStatus.Admin) { return muscle_log.framework.Util.Enum.Rights.ReadWrite; } if(GetReputationLevel(user) >= minRepLevel) { return muscle_log.framework.Util.Enum.Rights.ReadWrite; } return muscle_log.framework.Util.Enum.Rights.ReadOnly; }
/// <summary> /// calculates the user's reputation level and returns it as an integer /// </summary> /// <param name="user">ml_User object</param> /// <returns>user's level as an int value</returns> public int GetReputationLevel(ml_User user) { int reputation = calcUserRep(user); int rest = 0; if(reputation <= 200) { rest = reputation; } else if(reputation >= 201 && reputation <= 400) { rest = reputation - 200; } else if(reputation >= 401 && reputation <= 600) { rest = reputation - 400; } else if(reputation >= 601 && reputation <= 800) { rest = reputation - 600; } else if(reputation >= 801 && reputation <= 999) { rest = reputation - 800; } else if(reputation >= 1000) { rest = 200; } return Math.Min(((int)rest / 20) + 1, 10); }
public void ExerciseAccessTest() { MuscleLogContext ctx = new MuscleLogContext("data source=localhost;Initial Catalog=muscle-log;User ID=Max;integrated security=SSPI;multipleactiveresultsets=True;application name=EntityFramework"); TestUserService service = new TestUserService(3); // check admin's rights ml_User user = new ml_User(); user.userStatus = (int)muscle_log.framework.Util.Enum.UserStatus.Admin; Assert.AreEqual(muscle_log.framework.Util.Enum.Rights.ReadWrite, service.ExerciseAccess(user, 5)); Assert.AreEqual(muscle_log.framework.Util.Enum.Rights.ReadWrite, service.ExerciseAccess(user, 1)); // non-admin user.userStatus = (int)muscle_log.framework.Util.Enum.UserStatus.DefaultUser; Assert.AreEqual(muscle_log.framework.Util.Enum.Rights.ReadOnly, service.ExerciseAccess(user, 5)); Assert.AreEqual(muscle_log.framework.Util.Enum.Rights.ReadWrite, service.ExerciseAccess(user, 1)); // deleted user user.userStatus = (int)muscle_log.framework.Util.Enum.UserStatus.Deleted; Assert.AreEqual(muscle_log.framework.Util.Enum.Rights.ReadOnly, service.ExerciseAccess(user, 5)); Assert.AreEqual(muscle_log.framework.Util.Enum.Rights.ReadWrite, service.ExerciseAccess(user, 1)); }
/// <summary> /// gets the reputation of an user /// </summary> /// <param name="user">ml_User object of the user</param> /// <returns>user's reputation as an int value</returns> /// <remarks>method is virtual so it can be overwritten for testing purposes</remarks> protected virtual int calcUserRep(ml_User user) { throw new NotImplementedException(); }
public void Save(ml_User userModel) { if (userModel.ID > 0) { _repo.Insert(userModel); } else { _repo.Update(userModel); } }
protected override int calcUserRep(ml_User user) { return _rep; }
/// <summary> /// saves the current user with all its values in the database /// </summary> public void Save() { var user = new ml_User(); user.ID = ID; user.userStatus = (int)userStatus; user.userName = userName; user.userEmail = userEmail; using (var context = new MuscleLogContext()) { if (user.ID > 0) { context.ml_User.Attach(user); context.Entry(user).State = System.Data.Entity.EntityState.Modified; } else { context.ml_User.Add(user); } context.SaveChanges(); } }