예제 #1
0
        public static AuthPrincipal GetAuthPrincipalFromClaims(this HttpContextBase httpContext)
        {
            var claimsPrincipal = httpContext.User as ClaimsPrincipal;
            var claimsIdentity  = claimsPrincipal?.Identity as ClaimsIdentity;

            if (claimsIdentity == null)
            {
                return(null);
            }

            var authPrincipal = new AuthPrincipal(claimsIdentity.Name);

            Action <string, Action <string> > setClaim = (claimType, setter) =>
            {
                var claim = claimsIdentity.FindFirst(claimType);

                if (claim != null)
                {
                    setter(claim.Value);
                }
            };

            setClaim(OdissClaims.Id, value => { authPrincipal.ID = Guid.Parse(value); });
            setClaim(OdissClaims.UserName, value => { authPrincipal.UserName = value; });
            setClaim(OdissClaims.UserType, value => { authPrincipal.UserType = (UserTypeEnum)Convert.ToInt32(value); });
            setClaim(OdissClaims.Permissions, value => { authPrincipal.Permissions = (UserPermissionsEnum)Convert.ToInt32(value); });
            setClaim(OdissClaims.Applications, value => { authPrincipal.Applications = SplitGuids(value); });
            setClaim(OdissClaims.Groups, value => { authPrincipal.Groups = SplitGuids(value); });
            setClaim(OdissClaims.Email, value => { authPrincipal.Email = value; });
            setClaim(OdissClaims.FirstName, value => { authPrincipal.FirstName = value; });
            setClaim(OdissClaims.LastName, value => { authPrincipal.LastName = value; });

            return(authPrincipal);
        }
예제 #2
0
        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {
            if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath).StartsWith("octviewer") ||
                    VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath) == "logo" ||
                    VirtualPathUtility.MakeRelative("~", Request.Url.AbsolutePath) == "words_js")
                {
                    HttpContext.Current.SkipAuthorization = true;
                    return;
                }

                HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

                if (authCookie != null)
                {
                    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

                    if (authTicket == null)
                    {
                        return;
                    }

                    JavaScriptSerializer        serializer = new JavaScriptSerializer();
                    AuthPrincipalSerializeModel sm         = serializer.Deserialize <AuthPrincipalSerializeModel>(authTicket.UserData);

                    Sessions session = new Sessions(sm.ID);
                    sm = session.Get(); // Get and save the last user action

                    if (sm != null)
                    {
                        UserData userData = sm.DecryptUserData();

                        AuthPrincipal newUser = new AuthPrincipal(authTicket.Name)
                        {
                            ID           = userData.ID,
                            UserName     = userData.UserName,
                            UserType     = userData.UserType,
                            Permissions  = userData.Permissions,
                            Applications = userData.Applications,
                            Groups       = userData.Groups,
                            Email        = userData.Email,
                            FirstName    = userData.FirstName,
                            LastName     = userData.LastName
                        };

                        HttpContext.Current.User = newUser;

                        return;
                    }
                }

                FormsAuthentication.SignOut();
                new AuthLogin().CleanupSessions();

                HttpContext.Current.User = null;
            }
        }
예제 #3
0
        protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
        {
            HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];

            if (authCookie != null)
            {
                FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
                UserData userData = null;
                try
                {
                    userData = JsonConvert.DeserializeObject <UserData>(authTicket.UserData);
                }
                catch
                {
                    if (!String.IsNullOrEmpty(authTicket.UserData))
                    {
                        //var WebClient = new LmsWebClient();
                        //var result = WebClient.DownloadData<CustomerApiResult>("getcustomerbyusername", new { Username = authTicket.UserData, Role = role });
                        //if (result.User != null)
                        //{
                        //    userData = new UserData
                        //    {
                        //        Role = result.User.Role,
                        //        UserCacheKey = string.Format(CacheKey.USER_KEY, result.User.Id),
                        //        SchoolId = result.User.SchoolId,
                        //        UserId = result.User.Id,
                        //        UserNameOrEmail = authTicket.UserData
                        //    };
                        //}
                    }
                }
                AuthPrincipal newUser = new AuthPrincipal(authTicket);
                if (userData != null)
                {
                    newUser.UserId       = userData.UserId;
                    newUser.Role         = userData.Role;
                    newUser.UserCacheKey = userData.UserCacheKey;
                    newUser.SchoolUId    = userData.SchoolUId;
                    newUser.DisplayName  = userData.DisplayName;
                }
                HttpContext.Current.User = newUser;
            }
        }
        protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
        {
            var authCookie = Request.Cookies["AuthCookie"];

            if (authCookie != null)
            {
                var authTicket = FormsAuthentication.Decrypt(authCookie.Value);

                var serializedModel = JsonConvert.DeserializeObject <AuthSerializeModel>(authTicket.UserData);

                var principal = new AuthPrincipal(authTicket.Name)
                {
                    Id        = serializedModel.Id,
                    FirstName = serializedModel.FirstName,
                    LastName  = serializedModel.LastName,
                    Roles     = serializedModel.Roles
                };

                HttpContext.Current.User = principal;
            }
        }
예제 #5
0
        public dynamic GetResults(LibrarySettings.Application app, FormCollection form, AuthPrincipal user, int page = 0, string sort = "")
        {
            if (page == 0)
            {
                return(new
                {
                    recordsTotal = 0,
                    recordsFiltered = 0,
                    data = new List <List <string> >()
                });
            }

            IDictionary <string, object> searchParameters = BuildSearchParameters(app.Fields, form);
            var sortings      = BuildSorting(sort, app.Fields);
            var searchOptions = new SearchOptions
            {
                SearchParameters = searchParameters,
                Page             = page,
                Sortings         = sortings
            };

            var searchResult     = documentSearchEngine.Search(searchOptions);
            var dataTableResults = GetDataTableResults(searchResult.Records, app, form, user);

            return(new
            {
                recordsTotal = searchResult.TotalCount,
                recordsFiltered = searchResult.FilteredCount,
                data = dataTableResults
            });
        }
예제 #6
0
        public dynamic GetResults(LibrarySettings.Application app, FormCollection form, AuthPrincipal user, int page = 0, string sort = "")
        {
            var adapter          = GetAdapterForApplication(app.ID);
            var adapterType      = adapter.GetType();
            var getResultsMethod = adapterType.GetMethod("GetResults");

            return(getResultsMethod.Invoke(adapter, new object[] { app, form, user, page, sort }));
        }