示例#1
0
    private static void SetDeafaultUser(CMSDatabase db)
    {
        bool createUser = false;

        if (db.Users.Count() == 0)
        {
            createUser = true;
        }
        else
        {
            createUser = true;
            foreach (var user in db.Users.ToArray())
            {
                user.UserType = db.UserTypes.FirstOrDefault(ut => ut.ID == user.UserTypeID);
                if (user.UserType.AccessLevel == AccessLevel.VeryHigh)
                {
                    createUser = false;
                    break;
                }
            }
        }
        if (createUser)
        {
            UserType userType = db.UserTypes.FirstOrDefault(ut => ut.AccessLevel == AccessLevel.VeryHigh);
            User     user     = new User
            {
                Login    = "******",
                Password = SecurityFunctions.GetPasswordHash("admin"),
                UserType = userType,
                IdleTime = 10
            };
            db.Users.Add(user);
            db.SaveChanges();
        }
    }
        public static void EditUserData(CMSDatabase db, UserModel model, HttpContext context, out int statusCode)
        {
            if (!model.ID.HasValue ||
                !CorrectLogin(model.Login) ||
                (!string.IsNullOrEmpty(model.NewPassword) && !CorrectPassword(model.NewPassword)) ||
                model.IdleTime < 10 || model.IdleTime > 10080
                )
            {
                statusCode = 422;
                return;
            }
            User editableUser = db.Users.FirstOrDefault(u => u.ID == model.ID.Value);

            if (editableUser == null)
            {
                statusCode = 404;
                return;
            }
            else if (editableUser != context.Items["User"] as User || !editableUser.Password.Equals(SecurityFunctions.GetPasswordHash(model.CurrentPassword)))
            {
                statusCode = 403;
                return;
            }
            else if (!editableUser.Login.Equals(model.Login, StringComparison.Ordinal) && db.Users.FirstOrDefault(u => u.Login.Equals(model.Login, StringComparison.Ordinal)) != null)
            {
                statusCode = 409;
                return;
            }
            editableUser.Login = model.Login;
            if (!string.IsNullOrEmpty(model.NewPassword))
            {
                editableUser.Password = SecurityFunctions.GetPasswordHash(model.NewPassword);
            }
            editableUser.IdleTime = model.IdleTime;
            editableUser.Email    = model.Email;
            db.SaveChanges();
            statusCode = 200;

            LogManagementFunctions.AddAdminPanelLog(
                db: db,
                context: context,
                info: $"{(context.Items["LogLocalization"] as IAdminPanelLogLocalization)?.UserDataEdited}"
                );
        }
示例#3
0
        public static void AddUser(CMSDatabase db, UserModel model, HttpContext context, out int statusCode)
        {
            if (!CorrectLogin(model.Login) || !CorrectPassword(model.NewPassword) || !model.UserTypeId.HasValue ||
                db.UserTypes.FirstOrDefault(ut => ut.ID == model.UserTypeId.Value) == null)
            {
                statusCode = 422;
                return;
            }
            if (db.Users.AsNoTracking().FirstOrDefault(u => u.Login.Equals(model.Login, StringComparison.Ordinal)) != null)
            {
                statusCode = 409;
                return;
            }
            User user = new User
            {
                Login      = model.Login,
                Password   = SecurityFunctions.GetPasswordHash(model.NewPassword),
                IdleTime   = 10,
                UserTypeID = model.UserTypeId.Value
            };

            try
            {
                db.Users.Add(user);
            }
            catch (DbUpdateException)
            {
                statusCode = 409;
                return;
            }
            db.SaveChanges();
            statusCode = 201;

            LogManagementFunctions.AddAdminPanelLog(
                db: db,
                context: context,
                info: $"{user.Login} (ID-{user.ID.ToString()}): {(context.Items["LogLocalization"] as IAdminPanelLogLocalization)?.UserAdded}"
                );
        }