public void CreateAdminUser(AdminSetupModel adminSetupModel) { if (_connectionString == null) { _connectionString = ConfigurationManager.ConnectionStrings["eFormMainConnection"].ConnectionString; } // Seed admin and demo users var manager = new EformUserManager(new EformUserStore(new BaseDbContext(_connectionString))); var adminUser = new EformUser() { UserName = adminSetupModel.UserName, Email = adminSetupModel.Email, FirstName = adminSetupModel.FirstName, LastName = adminSetupModel.LastName, EmailConfirmed = true, TwoFactorEnabled = false, IsGoogleAuthenticatorEnabled = false }; if (!manager.Users.Any(x => x.Email.Equals(adminUser.Email))) { IdentityResult ir = manager.Create(adminUser, adminSetupModel.Password); if (ir != null) { manager.AddToRole(adminUser.Id, "admin"); } else { throw new Exception("Could not create the user"); } } }
public async Task AddToRoleAsync(EformUser user, string role) { if (!await _userManager.IsInRoleAsync(user, role)) { await _userManager.AddToRoleAsync(user, role); } }
public static AuthenticationProperties CreateProperties(EformUser user, string role) { IDictionary <string, string> data = new Dictionary <string, string> { { "userId", user.Id.ToString() }, { "userName", user.UserName }, { "role", role }, }; return(new AuthenticationProperties(data)); }
public static AuthenticationProperties CreateProperties(EformUser user, string role) { IDictionary <string, string> data = new Dictionary <string, string> { { "userId", user.Id.ToString() }, { "userName", user.UserName }, { "role", role }, }; if (!user.Locale.IsNullOrEmpty()) { data.Add("locale", user.Locale); } return(new AuthenticationProperties(data)); }
public void EformInGroupTest_CreateEformInGroup_ShouldCreatEformInGroup() { // Arrange EformUser eformUser = new EformUser(); eformUser.Email = Guid.NewGuid().ToString(); eformUser.FirstName = Guid.NewGuid().ToString(); eformUser.LastName = Guid.NewGuid().ToString(); DbContext.Users.Add(eformUser); DbContext.SaveChanges(); // Act EformUser foundeformUser = DbContext.Users.Find(eformUser.Id); // Assert Assert.NotNull(foundeformUser); Assert.AreEqual(eformUser.FirstName, foundeformUser.FirstName); }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var userManager = context.OwinContext.GetUserManager <EformUserManager>(); EformUser user = await userManager.FindAsync(context.UserName, context.Password); if (user == null) { context.SetError("The user name or password is incorrect.", "The user name or password is incorrect."); return; } ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager, OAuthDefaults.AuthenticationType); ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager, CookieAuthenticationDefaults.AuthenticationType); AuthenticationProperties properties = CreateProperties(user.UserName); AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties); context.Validated(ticket); context.Request.Context.Authentication.SignIn(cookiesIdentity); }
public void CreateAdminUser(AdminSetupModel adminSetupModel) { if (_connectionString == null) { _connectionString = ConfigurationManager.ConnectionStrings["eFormMainConnection"].ConnectionString; } // Seed admin and demo users var manager = new EformUserManager(new EformUserStore(new BaseDbContext(_connectionString))); var adminUser = new EformUser() { UserName = adminSetupModel.UserName, Email = adminSetupModel.Email, FirstName = adminSetupModel.FirstName, LastName = adminSetupModel.LastName, EmailConfirmed = true, }; if (!manager.Users.Any(x => x.Email.Equals(adminUser.Email))) { manager.Create(adminUser, adminSetupModel.Password); manager.AddToRole(adminUser.Id, "admin"); } }
public async Task <string> GenerateToken(EformUser user) { if (user != null) { var timeStamp = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); var claims = new List <Claim> { new Claim(JwtRegisteredClaimNames.Sub, user.Id.ToString()), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()), new Claim(AuthConsts.ClaimLastUpdateKey, timeStamp.ToString()), }; if (!string.IsNullOrEmpty(user.Locale)) { claims.Add(new Claim("locale", user.Locale)); } // Add user and roles claims var userClaims = _userManager.GetClaimsAsync(user).Result; var userRoles = _userManager.GetRolesAsync(user).Result; claims.AddRange(userClaims); foreach (var userRole in userRoles) { claims.Add(new Claim(ClaimTypes.Role, userRole)); var role = _roleManager.FindByNameAsync(userRole).Result; if (role != null) { var roleClaims = _roleManager.GetClaimsAsync(role).Result; foreach (var roleClaim in roleClaims) { claims.Add(roleClaim); } } } var userInMemoryClaims = await _claimsService.GetUserPermissions( user.Id, userRoles.Contains(EformRole.Admin)); // Add to memory var authItem = new AuthItem { TimeStamp = timeStamp, Claims = userInMemoryClaims, }; _authCacheService.Set(authItem, user.Id); var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenOptions.Value.SigningKey)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken(_tokenOptions.Value.Issuer, _tokenOptions.Value.Issuer, claims.ToArray(), expires: DateTime.Now.AddHours(24), signingCredentials: credentials); return(new JwtSecurityTokenHandler().WriteToken(token)); } return(null); }
public async Task <OperationResult> Create(UserRegisterModel userRegisterModel) { try { var core = await _coreHelper.GetCore(); var sdkDbContext = core.DbContextHelper.GetDbContext(); if (userRegisterModel.Role != EformRole.Admin && userRegisterModel.Role != EformRole.User) { return(new OperationResult(false, _localizationService.GetString("RoleNotFound"))); } var userResult = await _userManager.FindByNameAsync(userRegisterModel.Email); if (userResult != null) { return(new OperationResult(false, _localizationService.GetStringWithFormat("UserUserNameAlreadyExist", userRegisterModel.Email))); } if (userRegisterModel.Role != EformRole.Admin && !_dbContext.SecurityGroups.Any(x => x.Id == userRegisterModel.GroupId)) { return(new OperationResult(false, _localizationService.GetString("SecurityGroupNotFound"))); } var user = new EformUser { Email = userRegisterModel.Email, UserName = userRegisterModel.Email, FirstName = userRegisterModel.FirstName, LastName = userRegisterModel.LastName, Locale = "da", EmailConfirmed = true, TwoFactorEnabled = false, IsGoogleAuthenticatorEnabled = false }; var result = await _userManager.CreateAsync(user, userRegisterModel.Password); if (!result.Succeeded) { return(new OperationResult(false, string.Join(" ", result.Errors.Select(x => x.Description).ToArray()))); } // change role await _userManager.AddToRoleAsync(user, userRegisterModel.Role); // add to group if (userRegisterModel.GroupId > 0 && user.Id > 0 && userRegisterModel.Role != EformRole.Admin) { var securityGroupUser = new SecurityGroupUser() { SecurityGroupId = (int)userRegisterModel.GroupId, EformUserId = user.Id }; _dbContext.SecurityGroupUsers.Add(securityGroupUser); await _dbContext.SaveChangesAsync(); } var site = await sdkDbContext.Sites.SingleOrDefaultAsync(x => x.Name == userRegisterModel.FirstName + " " + userRegisterModel.LastName && x.WorkflowState != Constants.WorkflowStates.Removed); if (site == null) { await core.SiteCreate($"{userRegisterModel.FirstName} {userRegisterModel.LastName}", userRegisterModel.FirstName, userRegisterModel.LastName, null, "da"); } if (site != null) { site.IsLocked = true; await site.Update(sdkDbContext); var units = await sdkDbContext.Units.Where(x => x.SiteId == site.Id).ToListAsync(); foreach (Unit unit in units) { unit.IsLocked = true; await unit.Update(sdkDbContext); } var worker = await sdkDbContext.Workers.SingleOrDefaultAsync(x => x.FirstName == userRegisterModel.FirstName && x.LastName == userRegisterModel.LastName && x.WorkflowState != Constants.WorkflowStates.Removed); if (worker != null) { worker.IsLocked = true; await worker.Update(sdkDbContext); } } return(new OperationResult(true, _localizationService.GetStringWithFormat("UserUserNameWasCreated", user.UserName))); } catch (Exception exception) { _logger.LogError(exception.Message); return(new OperationResult(false, _localizationService.GetString("ErrorWhileCreatingUser"))); } }
public static async Task SeedAdmin(AdminSetupModel adminSetupModel, string defaultLocale, BaseDbContext dbContext) { var userStore = new UserStore <EformUser, EformRole, BaseDbContext, int, IdentityUserClaim <int>, EformUserRole, IdentityUserLogin <int>, IdentityUserToken <int>, IdentityRoleClaim <int> >(dbContext); IPasswordHasher <EformUser> hasher = new PasswordHasher <EformUser>(); var validator = new UserValidator <EformUser>(); var validators = new List <UserValidator <EformUser> > { validator }; var userManager = new UserManager <EformUser>(userStore, null, hasher, validators, null, null, null, null, null); // Set-up token providers. IUserTwoFactorTokenProvider <EformUser> tokenProvider = new EmailTokenProvider <EformUser>(); userManager.RegisterTokenProvider("Default", tokenProvider); IUserTwoFactorTokenProvider <EformUser> phoneTokenProvider = new PhoneNumberTokenProvider <EformUser>(); userManager.RegisterTokenProvider("PhoneTokenProvider", phoneTokenProvider); // Roles var roleStore = new RoleStore <EformRole, BaseDbContext, int>(dbContext); var roleManager = new RoleManager <EformRole>(roleStore, null, null, null, null); if (!await roleManager.RoleExistsAsync(EformRole.Admin)) { await roleManager.CreateAsync(new EformRole { Name = EformRole.Admin }); } if (!await roleManager.RoleExistsAsync(EformRole.User)) { await roleManager.CreateAsync(new EformRole { Name = EformRole.User }); } // Seed admin and demo users var timeZoneString = "Europe/Copenhagen"; try { TimeZoneInfo.FindSystemTimeZoneById(timeZoneString); } catch { timeZoneString = "E. Europe Standard Time"; } var adminUser = new EformUser { UserName = adminSetupModel.Email, Email = adminSetupModel.Email, FirstName = adminSetupModel.FirstName, LastName = adminSetupModel.LastName, Locale = string.IsNullOrEmpty(defaultLocale) ? LocaleNames.English : defaultLocale, TimeZone = timeZoneString, DarkTheme = true, Formats = LocaleNames.German, EmailConfirmed = true, TwoFactorEnabled = false, IsGoogleAuthenticatorEnabled = false }; if (!userManager.Users.Any(x => x.Email.Equals(adminUser.Email))) { var createResult = await userManager.CreateAsync(adminUser, adminSetupModel.Password); if (!createResult.Succeeded) { throw new Exception("Could not create the user"); } } var user = userManager.Users.FirstOrDefault(x => x.Email.Equals(adminUser.Email)); if (!await userManager.IsInRoleAsync(user, EformRole.Admin)) { await userManager.AddToRoleAsync(user, EformRole.Admin); } }
public Task AddPasswordAsync(EformUser user, string password) { return(_userManager.AddPasswordAsync(user, password)); }
public async Task <OperationResult> Create(UserRegisterModel userRegisterModel) { try { if (userRegisterModel.Role != EformRole.Admin && userRegisterModel.Role != EformRole.User) { return(new OperationResult(false, _localizationService.GetString("RoleNotFound"))); } var userResult = await _userManager.FindByNameAsync(userRegisterModel.Email); if (userResult != null) { return(new OperationResult(false, _localizationService.GetStringWithFormat("UserUserNameAlreadyExist", userRegisterModel.Email))); } if (userRegisterModel.Role != EformRole.Admin && !_dbContext.SecurityGroups.Any(x => x.Id == userRegisterModel.GroupId)) { return(new OperationResult(false, _localizationService.GetString("SecurityGroupNotFound"))); } var user = new EformUser { Email = userRegisterModel.Email, UserName = userRegisterModel.Email, FirstName = userRegisterModel.FirstName, LastName = userRegisterModel.LastName, EmailConfirmed = true, TwoFactorEnabled = false, IsGoogleAuthenticatorEnabled = false }; var result = await _userManager.CreateAsync(user, userRegisterModel.Password); if (!result.Succeeded) { return(new OperationResult(false, string.Join(" ", result.Errors.Select(x => x.Description).ToArray()))); } // change role await _userManager.AddToRoleAsync(user, userRegisterModel.Role); // add to group if (userRegisterModel.GroupId > 0 && user.Id > 0 && userRegisterModel.Role != EformRole.Admin) { var securityGroupUser = new SecurityGroupUser() { SecurityGroupId = (int)userRegisterModel.GroupId, EformUserId = user.Id }; _dbContext.SecurityGroupUsers.Add(securityGroupUser); await _dbContext.SaveChangesAsync(); } return(new OperationResult(true, _localizationService.GetStringWithFormat("UserUserNameWasCreated", user.UserName))); } catch (Exception exception) { _logger.LogError(exception.Message); return(new OperationResult(false, _localizationService.GetString("ErrorWhileCreatingUser"))); } }