Esempio n. 1
0
        public ActionResult Edit([Bind(Include = "Id,UserId,TenantId,Firstname,LastName,Username,Email,PasswordHash,SecurityStamp,MobileNumber,Gender,Birthdate,Created")] EditUserViewModel userviewmodel)
        {
            try
            {
                using (var ctx = new SaasDbContext())
                {
                    // Get existing user from db
                    var user = ctx.Users.Where(u => u.Id == userviewmodel.UserId).FirstOrDefault();

                    user.Firstname    = userviewmodel.Firstname;
                    user.Lastname     = userviewmodel.Lastname;
                    user.Email        = userviewmodel.Email;
                    user.UserName     = userviewmodel.Email;
                    user.Gender       = userviewmodel.Gender;
                    user.MobileNumber = userviewmodel.MobileNumber;

                    //Get the user role from db
                    var userRoleold = ctx.UserRoles.Where(ui => ui.UserId == userviewmodel.UserId).FirstOrDefault();
                    //Remove user role from db
                    ctx.UserRoles.Remove(userRoleold);
                    ctx.SaveChanges();


                    //Create a new user role
                    var modelRole = new LidiaUserRole()
                    {
                        UserId   = userviewmodel.UserId,
                        RoleId   = userviewmodel.Id,
                        TenantId = userviewmodel.TenantId
                    };

                    if (userviewmodel.UserId == CurrentUser.Id || User.IsInRole("SystemAdministrator") || User.IsInRole("TenantAdministrator"))
                    {
                        if (ModelState.IsValid)
                        {
                            //Update the user
                            ctx.Entry(user).State = EntityState.Modified;
                            ctx.UserRoles.Add(modelRole);
                            ctx.SaveChanges();
                            return(RedirectToAction("Index"));
                        }
                        ViewBag.TenantId = new SelectList(ctx.Tenants.ToList(), "TenantId", "Name");
                    }
                    else
                    {
                        return(View("Authorize"));
                    }
                }
            }

            catch (Exception ex)
            {
                LogService.Info("Applications not found", ex.Message, ex.InnerException);
            }

            return(View(userviewmodel));
        }
Esempio n. 2
0
        public ActionResult Edit(int?id)
        {
            //Create the model
            var model = new EditUserViewModel();

            // Create the user
            var user = new LidiaUser();

            var userRole = new LidiaUserRole();


            try
            {
                using (var ctx = new SaasDbContext())
                {
                    //Get user from db
                    user = ctx.Users.Where(u => u.Id == id).Include("Roles").FirstOrDefault();
                    //Get user role from db
                    userRole = ctx.UserRoles.Where(s => s.UserId == user.Id).FirstOrDefault();

                    if (User.IsInRole("SystemAdministrator"))
                    {
                        model.Firstname     = user.Firstname;
                        model.Lastname      = user.Lastname;
                        model.Email         = user.Email;
                        model.MobileNumber  = user.MobileNumber;
                        model.Gender        = user.Gender;
                        model.UserId        = user.Id;
                        model.Id            = userRole.RoleId;
                        model.TenantId      = userRole.TenantId;
                        model.PasswordHash  = user.PasswordHash;
                        model.Birthdate     = user.Birthdate;
                        model.SecurityStamp = user.SecurityStamp;

                        //Add user to model
                        ViewBag.Id = new SelectList(ctx.Roles.ToList(), "Id", "Name");
                    }
                    else if (CurrentTenant.TenantId == userRole.TenantId && User.IsInRole("TenantAdministrator"))
                    {
                        model.Firstname     = user.Firstname;
                        model.Lastname      = user.Lastname;
                        model.Email         = user.Email;
                        model.MobileNumber  = user.MobileNumber;
                        model.Gender        = user.Gender;
                        model.UserId        = user.Id;
                        model.Id            = userRole.RoleId;
                        model.TenantId      = userRole.TenantId;
                        model.PasswordHash  = user.PasswordHash;
                        model.Birthdate     = user.Birthdate;
                        model.SecurityStamp = user.SecurityStamp;

                        ViewBag.Id = new SelectList(ctx.Roles.Where(r => r.Id != 3).ToList(), "Id", "Name");
                    }
                    else if (CurrentUser.Id == user.Id)
                    {
                        model.Firstname     = user.Firstname;
                        model.Lastname      = user.Lastname;
                        model.Email         = user.Email;
                        model.MobileNumber  = user.MobileNumber;
                        model.Gender        = user.Gender;
                        model.UserId        = user.Id;
                        model.Id            = userRole.RoleId;
                        model.TenantId      = userRole.TenantId;
                        model.PasswordHash  = user.PasswordHash;
                        model.Birthdate     = user.Birthdate;
                        model.SecurityStamp = user.SecurityStamp;

                        ViewBag.Id = new SelectList(ctx.Roles.Where(r => r.Id == 1).ToList(), "Id", "Name");
                    }
                    else
                    {
                        return(View("Authorize"));
                    }
                }

                // Create the breadcrumb
                var breadcrumb = new List <BreadcrumbItemViewModel>();
                breadcrumb.Add(new BreadcrumbItemViewModel()
                {
                    Text = "Users",
                    Link = "/Users"
                });


                breadcrumb.Add(new BreadcrumbItemViewModel()
                {
                    Text = user.Firstname + " " + user.Lastname,
                    Link = "/Users/" + user.Id + "/Details"
                });

                breadcrumb.Add(new BreadcrumbItemViewModel()
                {
                    Text = "Edit"
                });

                ViewBag.Breadcrumb = breadcrumb;

                // Add currentUserId to model
                ViewBag.CurrentUser   = CurrentUser.Id;
                ViewBag.CurrentTenant = CurrentTenant.TenantId;

                if (model != null)
                {
                    return(View(model));
                }
                else
                {
                    return(RedirectToAction("Home/Index"));
                }
            }
            catch (Exception ex)
            {
                LogService.Info("User not found to edit", ex.Message, ex.InnerException);
                return(RedirectToAction("Home/Index"));
            }
        }
Esempio n. 3
0
        public async Task <ActionResult> Create([Bind(Include = "RoleId,TenantId,Firstname,LastName,Username,Email,Password,MobileNumber,Gender,Created")] CreateUserViewModel user)
        {
            try
            {
                //Create the LidiaUser
                var newUser = new LidiaUser()
                {
                    Firstname    = user.Firstname,
                    Lastname     = user.Lastname,
                    Email        = user.Email,
                    Gender       = user.Gender,
                    MobileNumber = user.MobileNumber,
                    UserName     = user.Email
                };


                using (var ctx = new SaasDbContext())
                {
                    if (User.IsInRole("SystemAdministrator") || user.TenantId == CurrentTenant.TenantId)
                    {
                        var result = await UserManager.CreateAsync(newUser, user.Password);

                        if (result.Succeeded)
                        {
                            //Add user role
                            var userRole = new LidiaUserRole()
                            {
                                RoleId   = user.RoleId,
                                TenantId = user.TenantId,
                                UserId   = newUser.Id
                            };
                            ctx.UserRoles.Add(userRole);
                            ctx.SaveChanges();
                            return(RedirectToAction("/Index"));
                        }
                    }


                    if (User.IsInRole("SystemAdministrator"))
                    {
                        ViewBag.TenantId = new SelectList(ctx.Tenants.ToList(), "TenantId", "Name");
                        ViewBag.Id       = new SelectList(ctx.Roles.ToList(), "Id", "Name");
                    }
                    else if (User.IsInRole("TenantAdministrator"))
                    {
                        ViewBag.TenantId = new SelectList(ctx.Tenants.Where(t => t.TenantId == CurrentTenant.TenantId).ToList(), "TenantId", "Name");
                        ViewBag.Id       = new SelectList(ctx.Roles.Where(t => t.Id != 3).ToList(), "Id", "Name");
                    }
                    else
                    {
                        return(View("Authorize"));
                    }
                }
            }
            catch (Exception ex)
            {
                LogService.Info("Application do not create", ex.Message, ex.InnerException);
            }

            return(View(user));
        }