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);
        }
Beispiel #5
0
        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);
     }
 }
Beispiel #8
0
 protected override int calcUserRep(ml_User user)
 {
     return _rep;
 }
Beispiel #9
0
        /// <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();
            }
        }