none
Crear un rol, pero a la vez que se cree en mi tabla permisos. RRS feed

  • Pregunta

  • Hola, quiero hacer lo siguiente, tengo mi tabla para crear role y se crean perfectos, pero necesito que a la vez lo cree tambien en mi tabla permisos, ya tengo una relacion entre estas dos tablas con el RoleId, solo quiero que me cree en la tabla permisos un perfil vacio que este ralacionado con el  perfil que acabe de crear.. en este caso roleId. trabajo con mvc4 ,

    Ejemplo

    Creo rol en tabla rol

    RoleId     NombreRole

    1               Administrador

    al crearlo tambien se cree en la tabla permisos, ya tengo una relacion entre los dos. RoelId

    Idpermisos  RoleId  campo1checboxx     campo2checboxx     etc

    1                   1            false=vacio                 false=vacio         false=vacio    etc

    el rol queda creado y en la tabla permisos se cree el RoleId tambien con los chekboos vacios.

    Ahora mi controladorde crear rol

       public ActionResult role()
            {
                return View();
            }

            [HttpPost]
            public ActionResult role(webpages_Roles roles)
            {
                if(!Roles.RoleExists(roles.RoleName))
                {
                    Roles.CreateRole(roles.RoleName);
                    return RedirectToAction("confirm", "Home");
                }
                else
                {
                    return RedirectToAction("Error", "Home");
                }
            }

    y el de mi tabla permisos

            public ActionResult AsignarVistas()
            {
                var ROL = from p in bd.webpages_Roles
                          select new
                          {
                              Id = p.RoleId,
                              Name = p.RoleId
                          };

                ViewBag.Rol = new SelectList(ROL, "Id", "Name");
                return PartialView();
            }
            [HttpPost]
            public ActionResult AsignarVistas(webpages_Permisos IdPermisos)
            {
                return View(IdPermisos);   
            }
           

    mis vistas en rol

    @model SifActivoFijo.Models.webpages_Roles
    @using (Ajax.BeginForm( new AjaxOptions
    {

        UpdateTargetId = "usercontent"
    }))
    {
        <fieldset>
            <legend>Nuevo Perfil</legend>
            <div class="editor-label">
                @Html.Label("Nombre")
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.RoleName)
                @Html.ValidationMessageFor(model => model.RoleName)
            </div>

            <p>
                <input type="submit" value="Crear" />
            </p>
        </fieldset>
    }

    mi vista permisos

    @model SifActivoFijo.Models.webpages_Permisos
    @{
        ViewBag.Title = "AsignarVistas";
    }
    @using (Ajax.BeginForm("AsignarVistas", "Account", new AjaxOptions
    {
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "usercontent",
        OnSuccess = "$.fn.ParseFormValidation('createForm')"
    }, new { @id = "createForm", @name = "createForm" }))
    {
        <fieldset>
            <h2 style="font-weight:700">Nuevo permiso</h2>
            <hr />
            <div class="separadores">
                <div class="flota">
                    <div class="editor-label">
                        @Html.LabelFor(model => model.IdPermisos)
                    </div>
                    <div class="editor-field">
                        @Html.CheckBoxFor(model => model.IdPermisos)
                        @Html.ValidationMessageFor(model => model.IdPermisos)
                    </div>
                </div>
                <div class="flota">
                    <div class="editor-label">
                        @Html.LabelFor(model => model.CrearActivos)
                    </div>
                    <div class="editor-field">
                        @Html.CheckBoxFor(model => model.CrearActivos)
                        @Html.ValidationMessageFor(model => model.CrearActivos)
                    </div>

               </div>

    <div class="flota">
                    <div class="editor-label">
                        @Html.LabelFor(model => model.RoleId)
                    </div>
                    <div class="editor-field">
                        @Html.TexBoxFor(model => model.RoleId)
                        @Html.ValidationMessageFor(model => model.RoleId)
                    </div>
                </div>


    erikpugo

    miércoles, 1 de abril de 2015 13:48

Todas las respuestas

  • hola

    pero en el action role() podrias invocar a otro metodo que registre el permiso

     [HttpPost]
    public ActionResult role(webpages_Roles roles)
    {
    	if(!Roles.RoleExists(roles.RoleName))
    	{
    		Roles.CreateRole(roles.RoleName);
    		Roles.CreateRolPermiso(...);
    		return RedirectToAction("confirm", "Home");
    	}
    	else
    	{
    		return RedirectToAction("Error", "Home");
    	}
    }

    o sea invocas la funcionalidad que agregue esa info extra

    ----

    entiendo que usas la seguridad de asp.net membership, no? si es asi creas tu propia implementacion?

    porque en asp.net membership no existe el concepto de Permisos, esto deberia ser una extension

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 1 de abril de 2015 14:02
  • Hola lenadro

    Efectivamente estoy creando una implementacion sobre asp.net membership, lo que hice fue una tabla nueva de permisos donde se ingresen un idpermiso y atravez de checkboos de paso a permisos en las vistas, sea crea un rol en la tabla roles  y este a su vez enviara cojera ese idrol y pór medio de una relacion con la tabla permisos y su campo id rol traera los idrol, el problema es como hacer que me cree un nuevo registro en la tabla permisos basandose en el idrol de la tabla rol.  


    erikpugo

    Me reconedaron hacerlo con LINQ
    • Editado Erik Puentes miércoles, 8 de abril de 2015 14:37 A
    miércoles, 8 de abril de 2015 14:34