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)); }
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)); }