Add missing files. Add API for client apps.
[wsti_pai.git] / Projects / Global.asax.cs
1 using Projects.Models;
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Mvc;
7 using System.Web.Optimization;
8 using System.Web.Routing;
9 using System.Web.Security;
10 using System.Web.Http;
11 using System.Web.Routing;
12
13 namespace Projects
14 {
15     public class MvcApplication : System.Web.HttpApplication
16     {
17         protected void Application_Start()
18         {
19             GlobalConfiguration.Configure(WebApiConfig.Register);
20
21             AreaRegistration.RegisterAllAreas();
22             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
23             RouteConfig.RegisterRoutes(RouteTable.Routes);
24             BundleConfig.RegisterBundles(BundleTable.Bundles);
25
26             var formatters = GlobalConfiguration.Configuration.Formatters;
27             formatters.Remove(formatters.XmlFormatter);
28
29             /* JSON formatting */
30             var json = formatters.JsonFormatter;
31             json.SerializerSettings.PreserveReferencesHandling  = Newtonsoft.Json.PreserveReferencesHandling.None;
32             json.SerializerSettings.ReferenceLoopHandling       = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
33             json.SerializerSettings.Formatting                  = Newtonsoft.Json.Formatting.Indented;
34         }
35
36         protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
37         {
38             if (FormsAuthentication.CookiesSupported == true)
39             {
40                 if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
41                 {
42                     try
43                     {
44                         //let us take out the username now                
45                         string username = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value).Name;
46                         string roles = string.Empty;
47
48                         using (ProjectsDBEntities entities = new ProjectsDBEntities())
49                         {
50                             User user = entities.Users.SingleOrDefault(u => u.login == username);
51
52                             roles = user.UserRole.role.Trim();
53                         }
54                         //let us extract the roles from our own custom cookie
55
56
57                         //Let us set the Pricipal with our user specific details
58                         HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(
59                           new System.Security.Principal.GenericIdentity(username, "Forms"), roles.Split(';'));
60                     }
61                     catch (Exception)
62                     {
63                         //somehting went wrong
64                     }
65                 }
66             }
67         }
68     }
69 }