示例#1
0
        public static void RemoveIdentity(TdIdentityContext context, string currentUserId)
        {
            //kill all users and roles except current user
            foreach (var user in context.Users.Where(u => !u.Id.Equals(currentUserId, StringComparison.InvariantCultureIgnoreCase)))
            {
                context.Users.Remove(user);
            }
            foreach (var role in context.Roles)
            {
                context.Roles.Remove(role);
            }
            context.SaveChanges();

            //re-make the default roles
            Configuration.InitializeStockRoles(context);

            //put the current user back in the admin role
            var userStore   = new UserStore <TicketDeskUser>(context);
            var userManager = new TicketDeskUserManager(userStore);
            var currentUser = userManager.FindById(currentUserId);

            if (!userManager.IsInRole(currentUser.Id, "TdAdministrators"))
            {
                userManager.AddToRole(currentUser.Id, "TdAdministrators");
            }
            context.SaveChanges();
        }
 public FirstRunSetupController(
     TicketDeskUserManager userManager,
     TicketDeskSignInManager signInManager)
 {
     UserManager   = userManager;
     SignInManager = signInManager;
     Model         = new SystemInfoViewModel();
 }
示例#3
0
 public UserController(
     TicketDeskUserManager userManager,
     TicketDeskSignInManager signInManager,
     TdDomainContext domainContext)
 {
     UserManager   = userManager;
     SignInManager = signInManager;
     DomainContext = domainContext;
 }
示例#4
0
 public UserAdministrationController(
     TicketDeskUserManager userManager,
     TicketDeskRoleManager roleManager,
     TdDomainContext domainContext)
 {
     UserManager   = userManager;
     RoleManager   = roleManager;
     DomainContext = domainContext;
 }
示例#5
0
 public UserController(
     TicketDeskUserManager userManager,
     TicketDeskSignInManager signInManager,
     TdDomainContext domainContext)
 {
     UserManager = userManager;
     SignInManager = signInManager;
     DomainContext = domainContext;
 }
示例#6
0
        public static void SetupDemoIdentityData(TdIdentityContext context, string currentUserId)
        {
            var userStore   = new UserStore <TicketDeskUser>(context);
            var roleStore   = new RoleStore <TicketDeskRole>(context);
            var userManager = new TicketDeskUserManager(userStore);
            var roleManager = new TicketDeskRoleManager(roleStore);

            roleManager.EnsureDefaultRolesExist();


            var staff = new TicketDeskUser {
                Id = "72bdddfb-805a-4883-94b9-aa494f5f52dc", UserName = "******", Email = "*****@*****.**", DisplayName = "HelpDesk User"
            };
            var reguser = new TicketDeskUser {
                Id = "17f78f38-fa68-445f-90de-38896140db28", UserName = "******", Email = "*****@*****.**", DisplayName = "Regular User"
            };
            var users = new List <TicketDeskUser> {
                staff, reguser
            };
            var rolesNames = new Dictionary <string, string[]>
            {
                { "*****@*****.**", new[] { "TdHelpDeskUsers" } },
                { "*****@*****.**", new[] { "TdInternalUsers" } }
            };

            if (currentUserId == null && userManager.FindByName("*****@*****.**") == null)
            {
                users.Add(new TicketDeskUser
                {
                    Id          = "64165817-9cb5-472f-8bfb-6a35ca54be6a",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    DisplayName = "Admin User"
                });
                rolesNames.Add("*****@*****.**", new[] { "TdAdministrators" });
            }


            foreach (var tdUser in users)
            {
                var user = userManager.FindById(tdUser.Id);
                if (user != null)
                {
                    userManager.Delete(user);
                }
                user = tdUser;
                userManager.Create(user, "123456");

                var rnames       = rolesNames[user.UserName];
                var rolesForUser = userManager.GetRoles(user.Id);
                foreach (var rname in rnames.Where(rname => !rolesForUser.Contains(rname)))
                {
                    userManager.AddToRole(user.Id, rname);
                }
            }
        }
        /// <summary>
        /// Migrates the users and roles from a legacy database to the new TD 2.5 schema.
        /// </summary>
        /// <param name="context">The identity database context</param>
        /// <param name="userManager">The user manager.</param>
        /// <param name="roleManager">The role manager.</param>
        /// <returns><c>true</c> if users migrated, <c>false</c> otherwise.</returns>
        public static bool MigrateSecurity(TdIdentityContext context, TicketDeskUserManager userManager, TicketDeskRoleManager roleManager)
        {
            roleManager.EnsureDefaultRolesExist();
            var appId =
                context.Database.SqlQuery <Guid>(
                    "select ApplicationId from aspnet_Applications where ApplicationName = 'TicketDesk'").First().ToString();
            var users = context.Database.SqlQuery <LegacyUser>(
                "select UserId, Email, Password, PasswordFormat, Comment from aspnet_Membership where ApplicationId = '" + appId + "' and IsApproved = 1 and IsLockedOut = 0").ToList();
            const string roleQuery = "SELECT r.RoleName FROM aspnet_UsersInRoles u inner join aspnet_Roles r on u.RoleId = r.RoleId WHERE u.UserId = @userId and r.ApplicationId = @appId";

            foreach (var user in users)
            {
                var newUser = new TicketDeskUser
                {
                    UserName    = user.Email,
                    Email       = user.Email,
                    DisplayName = user.Comment,
                };

                var result = user.PasswordFormat == 0 ?
                             userManager.Create(newUser, user.Password) :
                             userManager.Create(newUser);

                if (result.Succeeded)
                {
                    var rolesForUser =
                        context.Database.SqlQuery <string>(roleQuery,
                                                           new SqlParameter("userId", user.UserId),
                                                           new SqlParameter("appId", appId));
                    var newRoles = new List <string>();
                    foreach (var role in rolesForUser)
                    {
                        switch (role.ToLowerInvariant())
                        {
                        case "administrators":
                            newRoles.Add("TdAdministrators");
                            break;

                        case "helpdesk":
                            newRoles.Add("TdHelpDeskUsers");
                            break;

                        case "ticketsubmitters":
                            newRoles.Add("TdInternalUsers");
                            break;

                        default:
                            newRoles.Add("TdPendingUsers");
                            break;
                        }
                    }
                    userManager.AddToRoles(newUser.Id, newRoles.ToArray());
                }
            }
            return(true);
        }
        /// <summary>
        /// Migrates the users and roles from a legacy database to the new TD 2.5 schema.
        /// </summary>
        /// <param name="context">The identity database context</param>
        /// <param name="userManager">The user manager.</param>
        /// <param name="roleManager">The role manager.</param>
        /// <returns><c>true</c> if users migrated, <c>false</c> otherwise.</returns>
        public static bool MigrateSecurity(TdIdentityContext context, TicketDeskUserManager userManager, TicketDeskRoleManager roleManager)
        {
            roleManager.EnsureDefaultRolesExist();
            var appId =
                context.Database.SqlQuery<Guid>(
                    "select ApplicationId from aspnet_Applications where ApplicationName = 'TicketDesk'").First().ToString();
            var users = context.Database.SqlQuery<LegacyUser>(
                "select UserId, Email, Password, PasswordFormat, Comment from aspnet_Membership where ApplicationId = '" + appId + "' and IsApproved = 1 and IsLockedOut = 0").ToList();
            const string roleQuery = "SELECT r.RoleName FROM aspnet_UsersInRoles u inner join aspnet_Roles r on u.RoleId = r.RoleId WHERE u.UserId = @userId and r.ApplicationId = @appId";

            foreach (var user in users)
            {
                var newUser = new TicketDeskUser
                {
                    UserName = user.Email,
                    Email = user.Email,
                    DisplayName = user.Comment,
                };

                var result = user.PasswordFormat == 0 ?
                    userManager.Create(newUser, user.Password) :
                    userManager.Create(newUser);

                if (result.Succeeded)
                {
                    var rolesForUser =
                        context.Database.SqlQuery<string>(roleQuery,
                        new SqlParameter("userId", user.UserId),
                        new SqlParameter("appId", appId));
                    var newRoles = new List<string>();
                    foreach (var role in rolesForUser)
                    {
                        switch (role.ToLowerInvariant())
                        {
                            case "administrators":
                                newRoles.Add("TdAdministrators");
                                break;
                            case "helpdesk":
                                newRoles.Add("TdHelpDeskUsers");
                                break;
                            case "ticketsubmitters":
                                newRoles.Add("TdInternalUsers");
                                break;
                            default:
                                newRoles.Add("TdPendingUsers");
                                break;
                        }
                    }
                    userManager.AddToRoles(newUser.Id, newRoles.ToArray());
                }
            }
            return true;
        }
示例#9
0
        public static void InitializeStockUsers(TdIdentityContext context)
        {
            //create the standard roles and default admin account
            var userStore = new UserStore <TicketDeskUser>(context);
            var roleStore = new RoleStore <TicketDeskRole>(context);

            var userManager = new TicketDeskUserManager(userStore);
            var roleManager = new TicketDeskRoleManager(roleStore);

            roleManager.EnsureDefaultRolesExist();


            var existingAdminRole = roleManager.FindByName("TdAdministrators");

            //only create default admin user if no other user exists with the admin role
            if (existingAdminRole != null &&
                !userManager.Users.Any(u => u.Roles.Any(r => r.RoleId == existingAdminRole.Id)))
            {
                var admin = new TicketDeskUser
                {
                    Id          = "64165817-9cb5-472f-8bfb-6a35ca54be6a",
                    UserName    = "******",
                    Email       = "*****@*****.**",
                    DisplayName = "Admin User",
                };
                if (userManager.FindById("64165817-9cb5-472f-8bfb-6a35ca54be6a") == null)
                {
                    var adminRoles = new[] { "TdAdministrators" };
                    userManager.Create(admin, "123456");

                    foreach (var rname in adminRoles)
                    {
                        userManager.AddToRole(admin.Id, rname);
                    }
                }
            }
        }
        public static void SetupDemoIdentityData(TdIdentityContext context)
        {
            var userStore = new UserStore<TicketDeskUser>(context);
            var roleStore = new RoleStore<TicketDeskRole>(context);
            var userManager = new TicketDeskUserManager(userStore);
            var roleManager = new TicketDeskRoleManager(roleStore);

            roleManager.EnsureDefaultRolesExist();

            var admin = new TicketDeskUser { Id = "64165817-9cb5-472f-8bfb-6a35ca54be6a", UserName = "******", Email = "*****@*****.**", DisplayName = "Admin User" };
            var staff = new TicketDeskUser { Id = "72bdddfb-805a-4883-94b9-aa494f5f52dc", UserName = "******", Email = "*****@*****.**", DisplayName = "HelpDesk User" };
            var reguser = new TicketDeskUser { Id = "17f78f38-fa68-445f-90de-38896140db28", UserName = "******", Email = "*****@*****.**", DisplayName = "Regular User" };
            var users = new[] { admin, staff, reguser };
            var rolesNames = new Dictionary<string, string[]>
            {
                {"*****@*****.**", new[] {"TdAdministrators"}},
                {"*****@*****.**", new[] {"TdHelpDeskUsers"}},
                {"*****@*****.**", new[] {"TdInternalUsers"}}
            };
            foreach (var tdUser in users)
            {

                var user = userManager.FindByName(tdUser.UserName);
                if (user == null)
                {
                    user = tdUser;
                    userManager.Create(user, "123456");
                }
                var rnames = rolesNames[user.UserName];
                var rolesForUser = userManager.GetRoles(user.Id);
                foreach (var rname in rnames.Where(rname => !rolesForUser.Contains(rname)))
                {
                    userManager.AddToRole(user.Id, rname);
                }
            }
        }
 public TicketDeskContextSecurityProvider()
 {
     UserManager = DependencyResolver.Current.GetService<TicketDeskUserManager>();
     CurrentUserId = HttpContext.Current.User.Identity.GetUserId();
 }
示例#12
0
 public TicketController(TdDomainContext context, TicketDeskUserManager userManager)
 {
     UserManager = userManager;
     Context     = context;
 }
 public UserDisplayInfoCache(TicketDeskUserManager manager)
 {
     Manager = manager;
 }
 public UserAdministrationController(TicketDeskUserManager userManager, TicketDeskRoleManager roleManager)
 {
     UserManager = userManager;
     RoleManager = roleManager;
 }
示例#15
0
 public FilterBarViewModel(UserTicketListSetting currentListSetting)
 {
     CurrentListSetting = currentListSetting;
     RoleManager        = DependencyResolver.Current.GetService <TicketDeskRoleManager>();
     UserManager        = DependencyResolver.Current.GetService <TicketDeskUserManager>();
 }
示例#16
0
 public FilterBarViewModel(UserTicketListSetting currentListSetting)
 {
     CurrentListSetting = currentListSetting;
     RoleManager = DependencyResolver.Current.GetService<TicketDeskRoleManager>();
     UserManager = DependencyResolver.Current.GetService<TicketDeskUserManager>();
 }
示例#17
0
 public AccountController(TicketDeskUserManager userManager, TicketDeskSignInManager signInManager, TdPushNotificationContext notificationContext)
 {
     UserManager = userManager;
     SignInManager = signInManager;
     NotificationContext = notificationContext;
 }
示例#18
0
        protected override void Seed(TicketDesk.Domain.TicketDeskContext context)
        {
            var titles = new[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R" };

            foreach (var p in titles)
            {
                context.Tickets.AddOrUpdate(t => t.Title,
                                            new Ticket
                {
                    Title              = "Test Ticket " + p,
                    AffectsCustomer    = false,
                    AssignedTo         = "admin",
                    Category           = "Hardware",
                    CreatedBy          = "otherstaffer",
                    TicketStatus       = (p == "L") ? TicketStatus.Closed: TicketStatus.Active,
                    CurrentStatusDate  = DateTimeOffset.Now,
                    CurrentStatusSetBy = "otherstaffer",
                    Details            = "Lorem ipsum dolor sit amet, consectetur adipiscing elit fusce vel sapien elit in malesuada semper mi, id sollicitudin urna fermentum ut fusce varius nisl ac ipsum gravida vel pretium tellus.",
                    IsHtml             = false,
                    LastUpdateBy       = "otherstaffer",
                    LastUpdateDate     = DateTimeOffset.Now,
                    Owner              = "otherstaffer",
                    Priority           = "Low",
                    PublishedToKb      = false,
                    TagList            = "test,moretest",
                    TicketType         = "Problem"
                });
            }

            context.Settings.AddOrUpdate(
                s => s.SettingName,
                new Setting
            {
                SettingName        = "CategoryList",
                SettingValue       = "Hardware,Software,Network",
                DefaultValue       = "Hardware,Software,Network",
                SettingType        = "StringList",
                SettingDescription = "This is the list of possible selections for the Category dropdown list.\n\nIs is advised that your use generic categories. The recommended rule-of-thumb is that there should be one option that fits any possible ticket a user might create, and there should NOT be a value such as 'other', 'N/A', or 'unknown'. Keeping the values general in nature increases the odds that users will pick a meaningful value."
            },
                new Setting
            {
                SettingName        = "CategoryList-es",
                SettingValue       = "¿Hardware?,¿Software?,¿Network?",
                DefaultValue       = "¿Hardware?,¿Software?,¿Network?",
                SettingType        = "StringList",
                SettingDescription = "spanish translation."
            },
                new Setting
            {
                SettingName        = "PriorityList",
                SettingValue       = "High,Low,Medium",
                DefaultValue       = "High,Low,Medium",
                SettingType        = "StringList",
                SettingDescription = "This is the list of possible selections for the Priority dropdown list."
            },
                new Setting
            {
                SettingName        = "PriorityList-es",
                SettingValue       = "¿High?,¿Low?,¿Medium?",
                DefaultValue       = "¿High?,¿Low?,¿Medium?",
                SettingType        = "StringList",
                SettingDescription = "spanish translation."
            },
                new Setting
            {
                SettingName        = "TicketTypesList",
                SettingValue       = "Question,Problem,Request",
                DefaultValue       = "Question,Problem,Request",
                SettingType        = "StringList",
                SettingDescription = "This is the list of possible selections for the Ticket Type dropdown list. The type of ticket is usually the 'kind' of issue the user is submitting.\n\nIs is advised that your use generic types. The recommended rule-of-thumb is that there should be one option that fits any possible ticket a user might create, and there should NOT be a value such as 'other', 'N/A', or 'unknown'. Keeping the values general in nature increases the odds that users will pick a meaningful value."
            },
                new Setting
            {
                SettingName        = "TicketTypesList-es",
                SettingValue       = "¿Question?,¿Problem?,¿Request?",
                DefaultValue       = "¿Question?,¿Problem?,¿Request?",
                SettingType        = "StringList",
                SettingDescription = "spanish translation."
            });

            var userManager = new TicketDeskUserManager(context);

            var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context));

            if (!roleManager.RoleExists("Administrator"))
            {
                roleManager.Create(new IdentityRole("Administrator"));
            }

            if (!roleManager.RoleExists("HelpDesk"))
            {
                roleManager.Create(new IdentityRole("HelpDesk"));
            }

            if (!roleManager.RoleExists("TicketSubmitter"))
            {
                roleManager.Create(new IdentityRole("TicketSubmitter"));
            }

            if (userManager.FindByName("admin") == null)
            {
                var user = new UserProfile()
                {
                    UserName = "******", Email = "*****@*****.**"
                };
                var result = userManager.Create(user, "admin");
                if (result.Succeeded)
                {
                    userManager.AddToRole(user.Id, "Administrator");
                    userManager.AddToRole(user.Id, "HelpDesk");
                    userManager.AddToRole(user.Id, "TicketSubmitter");
                }
            }

            if (userManager.FindByName("otherstaffer") == null)
            {
                var user = new UserProfile()
                {
                    UserName = "******", Email = "*****@*****.**"
                };
                var result = userManager.Create(user, "otherstaffer");
                if (result.Succeeded)
                {
                    userManager.AddToRole(user.Id, "TicketSubmitter");
                }
            }

            context = new TicketDeskContext();



            context.SaveChanges();
        }
 public AccountController(TicketDeskUserManager userManager, TicketDeskSignInManager signInManager)
 {
     UserManager   = userManager;
     SignInManager = signInManager;
 }
示例#20
0
        public async Task <IHttpActionResult> Login(AuthorizeRequestDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var userStore = new UserStore <TicketDeskUser>(context);

            var manager = new TicketDeskUserManager(userStore);
            TicketDeskSignInManager signinmanager = new TicketDeskSignInManager(manager, HttpContext.Current.GetOwinContext().Authentication);


            // var signinManager = manager.get.GetUserManager<TicketDeskSignInManager>();
            var user = manager.FindByEmail(model.Username);

            var validCredentials = signinmanager.UserManager.CheckPassword(user, model.Password);

            if (!validCredentials)
            {
                return(Unauthorized());
                //sample code to run if user's credentials is valid and before login
                //if (!manager.IsInRole(user.Id, "Administrators"))
                //{
                //    FailureText.Text = "you need a higher permission level in order to login";
                //    return;
                //}
            }

            //then sign in
            var result = signinmanager.PasswordSignIn(model.Username, model.Password, true, shouldLockout: false);


            switch (result)
            {
            case SignInStatus.Success:


                var dic = new Dictionary <string, Object>();
                dic.Add("username", user.UserName);
                dic.Add("userid", user.Id);
                return(Ok(dic));

            case SignInStatus.LockedOut:
                return(Unauthorized());
            }
            //var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, true, true);



            //if (result != SignInStatus.Success && model.Username.Contains("@"))
            //{
            //   var  user = await UserManager.FindByEmailAsync(model.Username);
            //    if (user != null)
            //    {
            //        result = await SignInManager.PasswordSignInAsync(user.UserName, model.Password, true, true);
            //    }

            //}



            //switch (result)
            //{
            //    case SignInStatus.Success:
            //        //  var token = _tokenHelper.CreateToken(authApp);
            //        return Ok(UserManager.FindByEmailAsync(model.Username));

            //    case SignInStatus.LockedOut:
            //        return Unauthorized();
            //}

            return(NotFound());
        }
 public ManageController(TicketDeskUserManager userManager)
 {
     UserManager = userManager;
 }
 public UserAdministrationController(TicketDeskUserManager userManager, TicketDeskRoleManager roleManager)
 {
     UserManager = userManager;
     RoleManager = roleManager;
 }
示例#23
0
 public AccountController(TicketDeskUserManager userManager, TicketDeskSignInManager signInManager, TdPushNotificationContext notificationContext)
 {
     UserManager         = userManager;
     SignInManager       = signInManager;
     NotificationContext = notificationContext;
 }