Example #1
0
        public ActionResult Create([Bind(Include = "id,login_id,login_password,name")] m_user m_user, string[] roles)
        {
            if (roles == null)
            {
                roles = new string[0];
            }
            if (ModelState.IsValid)
            {
                var user = db.m_user.Where(u => u.login_id == m_user.login_id).FirstOrDefault();
                if (user == null)
                {
                    m_user.role           = ""; //暫定的処理
                    m_user.login_password = BCrypt.Net.BCrypt.HashPassword(m_user.login_password);
                    db.m_user.Add(m_user);
                    db.SaveChanges();

                    user = db.m_user.Where(u => u.login_id == m_user.login_id).FirstOrDefault();

                    foreach (var roleName in roles)
                    {
                        var role = new m_user_role
                        {
                            user_id = user.id,
                            role    = roleName
                        };
                        db.m_user_role.Add(role);
                        db.SaveChanges();
                    }

                    return(RedirectToAction("Index"));
                }
            }

            return(View(m_user));
        }
Example #2
0
        public ActionResult Edit([Bind(Include = "id,login_id,name")] m_user m_user, string[] roles)
        {
            if (ModelState.IsValid)
            {
                m_user u = db.m_user.Find(m_user.id);
                if (u != null)
                {
                    u.login_id = m_user.login_id;
                    u.name     = m_user.name;
                    db.SaveChanges();

                    var dbRoleList = db.m_user_role.Where(r => r.user_id == m_user.id)
                                     .Select(r => r.role).ToList();

                    if (roles == null)
                    {
                        roles = new string[0];
                    }
                    var roleList = roles.ToList();
                    foreach (var r in roles)
                    {
                        if (dbRoleList.Contains(r))
                        {
                            roleList.Remove(r);
                            dbRoleList.Remove(r);
                        }
                    }

                    foreach (var r in roleList)
                    {
                        var role = new m_user_role
                        {
                            user_id = m_user.id,
                            role    = r
                        };
                        db.m_user_role.Add(role);
                        db.SaveChanges();
                    }

                    foreach (var r in dbRoleList)
                    {
                        var role = db.m_user_role
                                   .Where(ur => ur.user_id == m_user.id && ur.role == r)
                                   .FirstOrDefault();
                        db.m_user_role.Remove(role);
                        db.SaveChanges();
                    }
                }

                return(RedirectToAction("Index"));
            }
            return(View(m_user));
        }