summaryrefslogtreecommitdiff
path: root/Project-Unite/Controllers/AdminController.cs
blob: 701110f85191ecb2582f1339a8b91d2a0e57688b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin;
using Project_Unite.Models;

namespace Project_Unite.Controllers
{
    //We have a custom ACL implementation so we do not need to use the ASP.NET role system to check if a user has an ACL rule.
    [Authorize]
    [RequiresAdmin]
    public class AdminController : Controller
    {
        private ApplicationDbContext db = new ApplicationDbContext();

        public ActionResult Index(string id = "home")
        {
            ViewBag.Page = id;
            return View();
        }

        public ActionResult AddUserToRole(string id)
        {
            var model = new AddUserToRoleViewModel();
            model.Roles = new List<SelectListItem>();
            var db = new ApplicationDbContext();
            foreach(var r in db.Roles.ToArray())
            {
                var converted = r as Role;
                model.Roles.Add(new SelectListItem
                {
                    Text = converted.Name,
                    Value = converted.Id
                });
            }
            model.Users = new List<SelectListItem>();
            foreach(var u in db.Users.OrderBy(x => x.DisplayName).ToArray())
            {
                model.Users.Add(new SelectListItem
                {
                    Text = u.DisplayName,
                    Value = u.Id
                });
            }
            model.RoleId = id;
            return View(model);
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult AddUserToRole(AddUserToRoleViewModel model)
        {
            var usermanager = HttpContext.GetOwinContext().Get<ApplicationUserManager>();
            usermanager.AddToRole(model.Username, model.RoleId);
            return Index("roles");
        }

        public ActionResult RoleDetails(string id)
        {
            var db = new ApplicationDbContext();
            Role role = null;
            foreach (var r in db.Roles.ToArray())
            {
                if (r is Role)
                    if ((r as Role).Id == id)
                        role = r as Role;
            }
            return View(role);
        }
    }
}