public async Task <IActionResult> Login([FromBody] LoginViewModel user)
        {
            IActionResult _result = new ObjectResult(false);
            GenericResult _authenticationResult = null;

            try
            {
                MembershipContext _userContext = _membershipService.ValidateUser(user.Username, user.Password);

                if (_userContext.User != null)
                {
                    IEnumerable <Role> _roles  = _userRepository.GetUserRoles(user.Username);
                    List <Claim>       _claims = new List <Claim>();
                    foreach (Role role in _roles)
                    {
                        Claim _claim = new Claim(ClaimTypes.Role, "Admin", ClaimValueTypes.String, user.Username);
                        _claims.Add(_claim);
                    }
                    await HttpContext.Authentication.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
                                                                 new ClaimsPrincipal(new ClaimsIdentity(_claims, CookieAuthenticationDefaults.AuthenticationScheme)),
                                                                 new Microsoft.AspNetCore.Http.Authentication.AuthenticationProperties {
                        IsPersistent = user.RememberMe
                    });


                    _authenticationResult = new GenericResult()
                    {
                        Succeeded = true,
                        Message   = "Authentication succeeded"
                    };
                }
                else
                {
                    _authenticationResult = new GenericResult()
                    {
                        Succeeded = false,
                        Message   = "Authentication failed"
                    };
                }
            }
            catch (Exception ex)
            {
                _authenticationResult = new GenericResult()
                {
                    Succeeded = false,
                    Message   = ex.Message
                };

                _loggingRepository.Add(new Error()
                {
                    Message = ex.Message, StackTrace = ex.StackTrace, DateCreated = DateTime.Now
                });
                _loggingRepository.Commit();
            }

            _result = new ObjectResult(_authenticationResult);
            return(_result);
        }
 public void TriggerTheDbCreationTest()
 {
     Application app = null;
     using (MembershipContext ctx = new MembershipContext("membershipDb"))
     {
         app = ctx.Applications.Find(Guid.Empty);
     }
     Assert.IsNull(app);
 }
예제 #3
0
 public static void SetBackupDetails(IEnumerable <string> cloudDirectories, int intervalMins)
 {
     using (var a = new MembershipContext())
     {
         SetBackupPaths(cloudDirectories, a);
         a.BackupDataSet.First().BackupIntervalMinutes = intervalMins;
         a.SaveChanges();
     }
 }
예제 #4
0
        private static void TestMembership()
        {
            EnableTracing();

            var context = new MembershipContext("Claims");

            var unitOfWork = new MembershipUnitOfWork(context);

            var role = unitOfWork.Roles.Create();

            unitOfWork.Roles.Add(role);

            role.Name = "Admin";

            unitOfWork.Commit();

            var roles = unitOfWork.Roles.FindAll(r => r.Name == "Test");

            roles.ToList().ForEach(r => Console.WriteLine(r.Name));

            role.Name = "Test";

            unitOfWork.Commit();

            Console.WriteLine("Done");

            var provider = new MembershipService(unitOfWork);

            string password;
            var    user = provider.CreateUser("christopher.nystrom", out password);

            unitOfWork.Commit();

            Console.WriteLine(password);

            Console.WriteLine("User created");

            var validate = provider.ValidateUser(user.Email, password);

            Console.WriteLine(validate);

            var foundUser = provider.GetUser("christopher.nystrom");

            Console.WriteLine(foundUser.Email);

            foundUser = provider.GetUser("john.larsson");

            if (foundUser != null)
            {
                Console.WriteLine(foundUser.Email);
            }
            else
            {
                Console.WriteLine("John didn't exist");
            }
        }
예제 #5
0
        public async Task <ActionResult> UserDetails(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                id = User.Identity.GetUserId();
            }
            var m = await MembershipContext.GetUserDetails(id);

            return(View(m));
        }
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            IEnumerable <string> authHeaderValues = null;

            request.Headers.TryGetValues("Authorization", out authHeaderValues);
            if (authHeaderValues == null)
            {
                return(base.SendAsync(request, cancellationToken)); //next IMessageHandler
            }
            var tokens = authHeaderValues.FirstOrDefault();         //Basic amVyZW15eWFuZzoxMjM0NTY=

            tokens = tokens.Replace("Basic", "").Trim();
            if (!string.IsNullOrEmpty(tokens))
            {
                byte[]   data         = Convert.FromBase64String(tokens);
                string   decodeString = Encoding.UTF8.GetString(data);
                string[] tokensValues = decodeString.Split(':');
                string   userUame     = tokensValues[0];
                string   hashPassword = tokensValues[1];

                //通过DI(WebAPI DependencyScope)获取认证服务
                IDependencyScope dependencyScope = request.GetDependencyScope();
                var accountAppService            = (AccountAppService)dependencyScope.GetService(typeof(AccountAppService));
                MembershipContext membership     = accountAppService.Login(new LoginInputDto
                {
                    Username = userUame,
                    Password = hashPassword
                });

                if (membership.IsAuthenticated)
                {
                    //创建认证Token
                    var        identity  = new GenericIdentity(membership.UserName);
                    IPrincipal principal = new GenericPrincipal(identity, membership.Roles);
                    Thread.CurrentPrincipal  = principal;
                    HttpContext.Current.User = principal;
                }
                else
                {
                    var response = new HttpResponseMessage(HttpStatusCode.Forbidden);
                    var tsc      = new TaskCompletionSource <HttpResponseMessage>();
                    tsc.SetResult(response);
                    return(tsc.Task);    //401 result
                }
            }
            else
            {
                var response = new HttpResponseMessage(HttpStatusCode.Forbidden);
                var tsc      = new TaskCompletionSource <HttpResponseMessage>();
                tsc.SetResult(response);
                return(tsc.Task);    //403 result
            }

            return(base.SendAsync(request, cancellationToken));  //next IMessageHandler
        }
예제 #7
0
        private MembershipContext CreateMembershipContext(User user)
        {
            var membershipContext = new MembershipContext {
                User = user
            };
            var identity = new GenericIdentity(user.Email);

            membershipContext.Principal = new GenericPrincipal(identity, new[] { user.Role.Title });

            return(membershipContext);
        }
예제 #8
0
 public MembershipContext ValidateUser(string username, string password)
 {
     var membershipCtx = new MembershipContext();
     var user = _userRepository.GetSingleByUsername(username);
     if (user != null && isUserValid(user, password))
     {
         var userRoles = GetUserRoles(user.Username); membershipCtx.User = user;
         var identity = new GenericIdentity(user.Username);
         membershipCtx.Principal = new GenericPrincipal(identity, userRoles.Select(x => x.Name).ToArray());
     }
     return membershipCtx;
 }
예제 #9
0
        public async static void Initialize(MembershipContext context,
                                            UserManager <ApplicationUser> userManager,
                                            RoleManager <ApplicationRole> roleManager)
        //UserManager<ApplicationUser> userManager)
        {
            // Do any initialization code here for the DB.
            // Can include populate lookups, data based configurations etc.
            //SeedData seed_data;
            PasswordHashService p_hasher  = new PasswordHashService();
            SeedData            seed_data = new SeedData(context, p_hasher, userManager, roleManager); //, roleManager, userManager);

            // Get counts if users.
            Task <int> numUsersResult = SumUsers(context);
            int        numUsers       = await SumUsers(context);

            // Get counts of data. Do this asynchronously.
            Task <int> numMembersResult = SumMembers(context);
            int        numMembers       = await SumMembers(context);

            Task <int> numMemberDetailsResult = SumMemberDetails(context);
            int        numMemberDetails       = await SumMemberDetails(context);

            Task <int> numMemberAddressResult = SumMemberAddresses(context);
            int        numMemberAddresses     = await SumMemberAddresses(context);

            // Full rebuild user authentication data - If no User data then regenerate User/Role records.
            if (numUsers == 0)
            {
                // Create initial users and roles.
                //seed_data.CreateUsersAsync();
                seed_data.CreateUsers();
            }

            // Full rebuild data - If no Member data then regenerate Member base table and all child tables.
            if (numMembers == 0)
            {
                // Add 50 random members to database.
                seed_data.GenerateMembers(50);
            }

            // If Member base table exists and child tables don't then generate those.
            if ((numMembers > 0) && (numMemberDetails == 0))
            {
                seed_data.GenerateMemberDetails();
            }

            // If Member base table exists and child tables don't then generate those.
            if ((numMembers > 0) && (numMemberAddresses == 0))
            {
                seed_data.GenerateMemberAddresses();
            }
        }
예제 #10
0
        public MembershipContext ValidateUser(string username, string password)
        {
            var membershipCtx = new MembershipContext();
            var user          = _userRepository.GetSingleByUsername(username);

            if (user != null && isUserValid(user, password))
            {
                var userRoles = GetUserRoles(username);
                membershipCtx.User = user;
                var identity = new GenericIdentity(user.Username);
                membershipCtx.Principal = new GenericPrincipal(identity, userRoles.Select(ur => ur.Name).ToArray());
            }
            return(membershipCtx);
        }
예제 #11
0
//POST api/values
public void Post([FromBody]User value)
{
	var validator = new UserValidator();
	if (!validator.Validate(value)){
	{
		return;
	}
	using (var db = new MembershipContext())
	{
		value = new User();
		db.Users.Add(value);
		db.SaveChanges();
	}
}
예제 #12
0
    /// <summary>
    /// Checks user impersonation settings.
    /// </summary>
    private bool EnsureImpersonation()
    {
        var userIsImpersonated = MembershipContext.CurrentUserIsImpersonated();

        // Show impersonate button for global admin only or impersonated user
        if (CookieHelper.AllowCookies && (MembershipContext.AuthenticatedUser.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin) || userIsImpersonated))
        {
            lnkUsers.Visible       = true;
            lnkUsers.OnClientClick = ucUsers.GetSelectionDialogScript();

            // Show all users except global administrators and public user, in CMSDesk show only site users
            ucUsers.WhereCondition = GetImpersonateWhereCondition().ToString(true);

            // Script for open uniselector modal dialog
            string impersonateScript = "function userImpersonateShowDialog () {US_SelectionDialog_" + ucUsers.ClientID + "()}";
            ScriptHelper.RegisterClientScriptBlock(this, typeof(string), "ImpersonateContextMenu", ScriptHelper.GetScript(impersonateScript));

            string userName = HTMLHelper.HTMLDecode(ValidationHelper.GetString(ucUsers.Value, String.Empty));
            if (userName != String.Empty)
            {
                // Get selected user info
                UserInfo iui = UserInfoProvider.GetUserInfo(userName);
                if (!iui.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Admin))
                {
                    // Indicates whether user will be able to continue in the administration interface
                    bool keepAdimUI = iui.CheckPrivilegeLevel(UserPrivilegeLevelEnum.Editor, SiteContext.CurrentSiteName);

                    AuthenticationHelper.ImpersonateUser(iui, null, !keepAdimUI);
                    if (keepAdimUI)
                    {
                        PortalScriptHelper.RegisterAdminRedirectScript(Page);
                    }
                }
            }

            // Set visibility of Cancel impersonation item in menu
            plcCancelImpersonate.Visible = userIsImpersonated;

            // Hide impersonate action in menu if user is already impersonated
            plcImpersonate.Visible = !plcCancelImpersonate.Visible;

            return(true);
        }

        // Hide impersonate action in menu
        plcImpersonate.Visible       = false;
        plcCancelImpersonate.Visible = false;

        return(false);
    }
예제 #13
0
        public MembershipContext ValidateUser(string username, string password)
        {
            var membershipContext = new MembershipContext(username);

            var user = this._userRepository.GetSingleByUsername(username);

            if (user != null && isUserValid(user, password))
            {
                membershipContext.IsAuthenticated = true;
                membershipContext.UserId          = user.ID;
                membershipContext.Email           = user.Email;
                membershipContext.Roles           = user.Roles.Select(r => r.Name.ToString()).Distinct().ToArray();
            }
            return(membershipContext);
        }
예제 #14
0
 public static Exception TestConnection()
 {
     try
     {
         using (var a = new MembershipContext())
         {
             a.CloudDirectories.Any();
         }
     }
     catch (Exception ex)
     {
         return(ex);
     }
     return(null);
 }
 public AccountDataController(
     MembershipContext membershipContext,
     SignInManager <ApplicationUser> signInManager,
     UserManager <ApplicationUser> userManager,
     RoleManager <ApplicationRole> roleManager,
     //IAccountDataRequest accountdatarequest,
     IMapper objectmapper)
 {
     _membershipContext = membershipContext;
     _signinmanager     = signInManager;
     _usermanager       = userManager;
     _roleManager       = roleManager;
     //_accountdatarequest = accountdatarequest;
     _objectmapper = objectmapper;
 }
 private void GetMembers()
 {
     using (MembershipContext db = new MembershipContext())
     {
         try
         {
             var Members = (from allMembers in db.Members select allMembers);
             MemberGridView.DataSource = Members.ToList();
             MemberGridView.DataBind();
         }
         catch
         {
         }
     }
 }
예제 #17
0
        public EditMemberViewModel()
        {
            _memberContext = ContextFactory.GetTeamContext();
            _userContext = ContextFactory.GetUserRegistrationContext();
            _countryContext = ContextFactory.GetCountryContext();
            _membershipContext = ContextFactory.GetMembershipContext();

            _saveChangesCommand = new RelayCommand( OnSaveChanges );
            _changePasswordCommand = new RelayCommand( OnChangePassword );
            statusTimer = new DispatcherTimer();
            statusTimer.Interval = new TimeSpan( 0, 0, 0, 3 );
            statusTimer.Tick += new EventHandler( OnTimerTick );
            IsStatusVisible = Visibility.Collapsed;
            IsLoggedIn = true;
            //LoadData(id);
            UpdateForUsersRole();
        }
예제 #18
0
        public MembershipContext ValidateUser(string username, string password)
        {
            var membershipContext = new MembershipContext();

            var existingUser = _repository.GetSingle <Entities.DatabaseEntities.User>(u => u.Username == username, u => u.Roles);

            if (existingUser != null && IsPasswordValid(password, existingUser.HashedPassword))
            {
                membershipContext.User = _mapper.Map <Entities.ServicesEntities.User>(existingUser);

                var identity = new GenericIdentity(existingUser.Username);

                membershipContext.Principal = new GenericPrincipal(identity, existingUser.Roles.Select(r => r.Name).ToArray());
            }

            return(membershipContext);
        }
예제 #19
0
        public MembershipContext ValidateUser(string userName, string password)
        {
            var membershipContext = new MembershipContext();

            var user = _userRepository.GetSingleByUserName(userName);

            if (null != user && IsUserValid(user, password))
            {
                var roles = GetUserRoles(userName);
                membershipContext.User = user;

                var userIdenity = new GenericIdentity(userName);
                membershipContext.Principal = new GenericPrincipal(userIdenity, roles.Select(s => s.Name).ToArray());
            }

            return(membershipContext);
        }
예제 #20
0
        private async Task <IEnumerable <TypeInfo> > GetListOfControllersAsync(MembershipContext membershipContext, IAuthorizationService authorizer, int?groupId = null)
        {
            ClaimsPrincipal principal = membershipContext.Principal;

            if (groupId.HasValue)
            {
                // If groupId is present, then uses that's roles for authorize, otherwise using real principal's roles
                principal = await CreateFakePrincipal(membershipContext, groupId);

                if (principal == null)
                {
                    throw new ArgumentOutOfRangeException(nameof(principal));
                }
            }

            var allowedList     = new List <TypeInfo>();
            var controllersList = authorizerAdapter.GetControllers <Controller>("Index", "IndexAsync");

            foreach (var type in controllersList)
            {
                var method = type.GetMethod("Index", BindingFlags.Public | BindingFlags.Instance)
                             ?? type.GetMethod("IndexAsync", BindingFlags.Public | BindingFlags.Instance);
                if (method != null)
                {
                    var authorizeAttribute = method.GetCustomAttribute <AuthorizeAttribute>(true);
                    if (authorizeAttribute != null)
                    {
                        if (string.IsNullOrWhiteSpace(authorizeAttribute.ActiveAuthenticationSchemes) || string.Equals(authorizeAttribute.ActiveAuthenticationSchemes, membershipContext.Identity.AuthenticationType))
                        {
                            var allow = await authorizer.AuthorizeAsync(principal, authorizeAttribute.Policy);

                            if (allow)
                            {
                                allowedList.Add(type.GetTypeInfo());
                            }
                        }
                    }
                    else
                    {
                        allowedList.Add(type.GetTypeInfo());
                    }
                }
            }
            return(allowedList);
        }
예제 #21
0
        public async Task <IActionResult> AccountUserLogin([FromBody] UserCredentialModel user)
        {
            ActionResult _result = new ObjectResult(false);
            BaseResponse _authenticationResponse = null;

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                MembershipContext _membershipContext = _userService.ValidateUser(user.Username, user.Password);

                if (_membershipContext.User != null)
                {
                    // generate Json Web Token
                    string token = GenerateToken(user.Username);

                    _authenticationResponse = new BaseResponse()
                    {
                        Succeeded = true,
                        Message   = token
                    };
                }
                else
                {
                    _authenticationResponse = new BaseResponse()
                    {
                        Succeeded = false,
                        Message   = "Authentication failed"
                    };
                }
            }
            catch (Exception ex)
            {
                _authenticationResponse = new BaseResponse()
                {
                    Succeeded = false,
                    Message   = ex.Message
                };
            }
            _result = new ObjectResult(_authenticationResponse);
            return(_result);
        }
예제 #22
0
        public MembershipContext ValidateUser(string username, string password)
        {
            var membershipCtx = new MembershipContext();

            var newuser = GetSingleByUsername(username);

            if (newuser != null && isUserValid(newuser, password))
            {
                var userRoles = GetUserRoles(newuser.username);
                membershipCtx.objuser = newuser;

                var identity = new GenericIdentity(newuser.username);
                membershipCtx.Principal = new GenericPrincipal(
                    identity,
                    userRoles.Select(x => x.description).ToArray());
            }

            return(membershipCtx);
        }
예제 #23
0
        public JwtProvider(
            RequestDelegate next,
            MembershipContext dbContext,
            UserManager <ApplicationUser> userManager,
            RoleManager <ApplicationRole> roleManager,
            SignInManager <ApplicationUser> signInManager)
        {
            _next = next;

            // Instantiate JWT-related members
            TokenExpiration    = TimeSpan.FromMinutes(86400);
            SigningCredentials = new SigningCredentials(SecurityKey, SecurityAlgorithms.HmacSha256);

            // Instantiate through Dependency Injection
            DbContext     = dbContext;
            UserManager   = userManager;
            SignInManager = signInManager;
            RoleManager   = roleManager;
        }
예제 #24
0
        public HttpResponseMessage Login(HttpRequestMessage request, LoginViewModel viewModel)
        {
            var httpResponse = CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response;
                if (ModelState.IsValid)
                {
                    MembershipContext userContext = _membershipService.ValidateUser(viewModel.Username, viewModel.Password);
                    response = request.CreateResponse(HttpStatusCode.OK, userContext.User != null ? new { success = true } : new { success = false });
                }
                else
                {
                    response = request.CreateResponse(HttpStatusCode.OK, new { success = false });
                }
                return(response);
            });

            return(httpResponse);
        }
예제 #25
0
        public MembershipContext ValidateUser(string username, string password)
        {
            var membershipCtx = new MembershipContext();

            var user = GetUserByEmail(username);

            if (user != null && IsUserValid(user, password))
            {
                var userRoles = GetUserRoles(user.EmailAddress);
                membershipCtx.EmplonomyUser = user;

                var identity = new GenericIdentity(user.EmailAddress);
                membershipCtx.Principal = new GenericPrincipal(
                    identity,
                    userRoles.Select(x => x.Name).ToArray());
            }

            return(membershipCtx);
        }
        public MembershipContext ValidateUser(string username, string password)
        {
            var membershipCtx = new MembershipContext();

            var user = this._authenticationContext.Users.Single(x => x.Username == username);             //_userRepository.GetSingleByUsername(username);

            if (user != null && this.AuthenticateUser(username, password, UserType.User) > 0)
            {
                //var userRoles = GetUserRoles(user.Username);
                membershipCtx.User = user;

                var identity = new GenericIdentity(user.Username);
                membershipCtx.Principal = new GenericPrincipal(
                    identity,
                    new string[] { "User" });
            }

            return(membershipCtx);
        }
        public HttpResponseMessage ChangePassword(HttpRequestMessage request, RegistrationVM userVM)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;
                if (!ModelState.IsValid)
                {
                    response = request.CreateResponse(HttpStatusCode.BadRequest,
                                                      ModelState.Keys.SelectMany(k => ModelState[k].Errors).Select(m => m.ErrorMessage).ToArray());
                }
                else
                {
                    MembershipContext _userContext = _membershipService.ValidateUser(userVM.Username, userVM.OldPassword);

                    if (_userContext.User != null)
                    {
                        var _user = _membershipService.UpdateUser(userVM.Username, userVM.Email, userVM.Password);

                        if (_user != null && _user.Item1 != null)
                        {
                            response = request.CreateResponse(HttpStatusCode.OK,
                                                              new
                            {
                                message = _user.Item2,
                                success = true,
                                role = _user.Item1.UserRoles.FirstOrDefault().Role.Name,
                                email = _user.Item1.Email
                            });
                        }
                        else
                        {
                            response = request.CreateResponse(HttpStatusCode.OK, new { message = _user.Item2, success = false });
                        }
                    }
                    else
                    {
                        response = request.CreateResponse(HttpStatusCode.OK, new { message = "Old Password is incorrect", success = false });
                    }
                }
                return response;
            }));
        }
        public MembershipContext ValidateUser(string email, string senha, int perfilModulo)
        {
            var membershipCtx = new MembershipContext();

            var usuario = _usuarioRep.GetSingleByEmail(email, perfilModulo);

            if (usuario != null && isUserValid(usuario, senha))
            {
                membershipCtx.Usuario = usuario;

                string[] perfil = { usuario.Perfil.DescPerfil };

                var identity = new GenericIdentity(usuario.UsuarioEmail);

                identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, usuario.Id.ToString(), ClaimValueTypes.String));

                membershipCtx.Principal = new GenericPrincipal(identity, perfil);
            }

            return(membershipCtx);
        }
        protected void MemberGridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            int selectedRow = e.RowIndex;
            int MemberID    = Convert.ToInt32(MemberGridView.DataKeys[selectedRow].Values["MemberID"]);

            try
            {
                using (MembershipContext db = new MembershipContext())
                {
                    member deleteMember = (from memberRecords in db.members
                                           where memberRecords.memberID == MemberID
                                           select memberRecords).FirstOrDefault();
                    db.members.Remove(deleteMember);
                    db.SaveChanges();
                    this.GetMembers();
                }
            }
            catch
            {
            }
        }
예제 #30
0
 public async Task <ActionResult> ChangeAccountInfo(ChangeAccountInfoModel model, string returnUrl)
 {
     if (ModelState.IsValid)
     {
         ApplicationUser user = new ApplicationUser {
             FirstName = model.FirstName, LastName = model.LastName
         };
         if (!string.IsNullOrEmpty(model.Email))
         {
             user.Email = model.Email;
         }
         await MembershipContext.ChangeAccountInfo(User.Identity.GetUserId(), user);
     }
     if (string.IsNullOrEmpty(returnUrl))
     {
         return(RedirectToAction("Index", "Home"));
     }
     else
     {
         return(Redirect(returnUrl));
     }
 }
예제 #31
0
        private async Task <ClaimsPrincipal> CreateFakePrincipal(MembershipContext membershipContext, int?groupId)
        {
            if (!groupId.HasValue)
            {
                throw new ArgumentNullException(nameof(groupId));
            }

            var group = await groupRepository.AsQueryable(g => g.Role).Where(g => g.Role.Delstat == 0 && g.Delstat == 0 && g.Id == groupId).ToListAsync();

            var roles = group.Select(g => g.Role.Code).Distinct().ToList();

            if (roles.Count <= 0)
            {
                return(null);
            }

            var claims    = roles.Select(roleCode => new Claim(ClaimTypes.Role, roleCode, ClaimValueTypes.String, membershipContext.Userid)).ToList();
            var identity  = new ClaimsIdentity(claims, SidAuthenticationDefaults.AuthenticationScheme);
            var principal = new ClaimsPrincipal(identity);

            return(principal);
        }
예제 #32
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, MembershipContext context)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();
            app.UseCookiePolicy();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
            DbInitializer.Initialize(context);
        }
예제 #33
0
            public void Initialize()
            {
                Database.SetInitializer <MembershipContext>(null);

                try
                {
                    using (var context = new MembershipContext())
                    {
                        if (!context.Database.Exists())
                        {
                            // Create the SimpleMembership database without Entity Framework migration schema
                            ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                        }
                    }

                    WebSecurity.InitializeDatabaseConnection("Membership", "UserProfiles", "UserId", "Username", autoCreateTables: true);
                }
                catch (Exception ex)
                {
                    throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
                }
            }
예제 #34
0
		internal void EmailBodyUserEmail(string emailAddress, string fromDisplayName, string from, string subject, string body, Action<InvokeOperation> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.EmailBodyUserEmail(emailAddress, fromDisplayName, from, subject, body, completedAction, userState);
		}
예제 #35
0
		internal void EmailTemplateEmail(string emailAddress, string fromDisplayName, string from, string subject, string bodyFileName, string replacements, Action<InvokeOperation> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.EmailTemplateEmail(emailAddress, fromDisplayName, from, subject, bodyFileName, replacements, completedAction, userState);
		}
예제 #36
0
		internal void UnlockUser(string userName, Action<InvokeOperation<bool>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.UnlockUser(userName, completedAction, userState);
		}
 private bool UserNameExist(string userName, MembershipContext ctx)
 {
     bool exist = false;
     var predicate = MatchApplication().And(MatchUserName(userName));
     exist = ctx.Users.Count(predicate.ToExpressionFunc()) > 0;
     return exist;
 }
예제 #38
0
 public UserRepository(MembershipContext ctx)
 {
     this.ctx = ctx;
 }
예제 #39
0
 public UnitOfWork()
 {
     ctx = new MembershipContext();
 }
 private User GetUserByEmail(string email, MembershipContext ctx)
 {
     return GetUser(u => u.Email.ToLower() == email.ToLower(), ctx);
 }
예제 #41
0
		internal void ValidateResetPasswordCode(string resetPasswordCode, Action<InvokeOperation<string>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.ValidateResetPasswordCode(resetPasswordCode, completedAction, userState);
		}
예제 #42
0
		internal void DeleteUser(string userName, bool deleteAllRelatedData, Action<InvokeOperation<bool>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.DeleteUser(userName, deleteAllRelatedData, completedAction, userState);
		}
예제 #43
0
		internal void CreateUser(string userName, string password, string emailAddress, string roleName, Action<InvokeOperation> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.CreateUser(userName, password, emailAddress, roleName, completedAction, userState);
		}
 private User GetUserByName(string userName, MembershipContext ctx)
 {
     return GetUser(u => u.Name.ToLower() == userName.ToLower(), ctx);
 }
 private bool UserEmailExist(string email, MembershipContext ctx)
 {
     bool exist = false;
     var predicate = MatchApplication().And(MatchEmail(email));
     exist = ctx.Users.Count(predicate.ToExpressionFunc()) > 0;
     return exist;
 }
예제 #46
0
 public RoleRepository(MembershipContext ctx)
 {
     this.ctx = ctx;
 }
예제 #47
0
		internal void GetUserNameByEmail(string emailToMatch, Action<InvokeOperation<string>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.GetUserNameByEmail(emailToMatch, completedAction, userState);
		}
예제 #48
0
		internal void GetNumberOfUsersOnline(Action<InvokeOperation<int>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.GetNumberOfUsersOnline(completedAction, userState);
		}
예제 #49
0
		internal void ResetAndChangePassword(string resetPasswordCode, string newPassword, Action<InvokeOperation<bool>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.ResetAndChangePassword(resetPasswordCode, newPassword, completedAction, userState);
		}
        private User GetUser(Expression<Func<User, bool>> query, MembershipContext context)
        {
            User user = context.Users.Where(query).Where(MatchApplication()).Single();

            return user;
        }
 private Function GetFunctionByName(string funcName, MembershipContext ctx)
 {
     return GetFunction(MatchName(funcName), ctx);
 }
 private Function GetFunction(Expression<Func<Function, bool>> predicate, MembershipContext ctx)
 {
     return ctx.Functions.SingleOrDefault(MatchApplication().And(predicate).ToExpressionFunc());
 }
예제 #53
0
		internal void ChangePasswordQuestionAndAnswer(string userName, string password, string newPasswordQuestion, string newPasswordAnswer, Action<InvokeOperation<bool>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.ChangePasswordQuestionAndAnswer(userName, password, newPasswordQuestion, newPasswordAnswer, completedAction, userState);
		}
예제 #54
0
		internal void ResetPassword(string userName, Action<InvokeOperation<string>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.ResetPassword(userName, completedAction, userState);
		}
        /// <summary>
        /// validate the user and password
        /// throw exceptions for NotExist/NotConfirmed/LockedOut user;
        /// if wrong password is given, increase the FaildPasswordAttempCount, if this exceeds the MaxInvalidPasswordAttemps, throw exception;
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="ctx"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        private bool ValidateUser(string username, string password, MembershipContext ctx, out User user)
        {
            user = GetUser(u => u.Name.ToLower() == username.ToLower(), ctx);
            if (user == null)
            {
                throw new EFMemberException(EFMembershipValidationStatus.UserNotExist, string.Format(Resource.msg_UserNotExist, username));
            }
            if (!user.IsConfirmed)
            {
                throw new EFMemberException(EFMembershipValidationStatus.UserNotConfirmed, string.Format(Resource.msg_UserNotConfirmed, username));
            }
            if (user.IsLockedOut)
            {
                throw new EFMemberException(EFMembershipValidationStatus.UserIsLockedOut, string.Format(Resource.msg_UserLockedOut, username));
            }

            string encryptedPwd = EncryptPassword(password);
            if (encryptedPwd != user.Password)
            {
                // update falure password attempt count
                DateTime? lastFailureTry = user.FailedPasswordAttempWindowStart;
                if (lastFailureTry == null || DateTime.Now > lastFailureTry.Value.AddMinutes(PasswordAttemptWindow))
                {
                    user.FailedPasswordAttempWindowStart = DateTime.Now;
                    user.FailedPasswordAttempCount = 1;
                }
                else
                {
                    ++user.FailedPasswordAttempCount;
                }

                if (user.FailedPasswordAttempCount >= MaxInvalidPasswordAttempts)
                {
                    user.IsLockedOut = true;
                    user.LastLockoutDate = DateTime.Now;
                }
                ctx.SaveChanges();

                throw new EFMemberException(EFMembershipValidationStatus.WrongPassword, string.Format(Resource.msg_WrongPassword, username));
            }

            // update last date
            user.LastActiveDate = DateTime.Now;
            user.LastLoginDate = DateTime.Now;
            return true;
        }
예제 #56
0
		internal void ChangePassword(string userName, string currentPassword, string newPassword, Action<InvokeOperation<bool>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.ChangePassword(userName, currentPassword, newPassword, completedAction, userState);
		}
예제 #57
0
 public static MembershipContext GetMembershipContext()
 {
     return _membershipContext ?? (_membershipContext = new MembershipContext());
 }
        private bool FuncExist(string funcName, MembershipContext ctx)
        {
            if (string.IsNullOrEmpty(funcName))
            {
                throw new ArgumentNullException("funcName");
            }

            return ctx.Functions.Count(MatchApplication().And(MatchName(funcName)).ToExpressionFunc()) > 0;
        }
예제 #59
0
		internal void ValidateUser(string userName, string password, Action<InvokeOperation<bool>> completedAction, object userState)
		{
			MembershipContext membership = new MembershipContext();
			membership.ValidateUser(userName, password, completedAction, userState);
		}