示例#1
0
        public async Task <ApiResponse <SignedInMember> > Login(MemberLoginRequest request)
        {
            var member = await _memberManager.FindByNameAsync(request.Address);

            if (member != null && !string.IsNullOrEmpty(request.Password))
            {
                var validateResponse = await ValidateMember(member, request.Password);

                if (!(validateResponse.Success))
                {
                    return(ApiResponse.BadRequestResult <SignedInMember>(validateResponse.Error));
                }
                var userClaim = new MemberClaim()
                {
                    UserId  = member.Id,
                    Address = member.UserName,
                };
                var token = CreateMemberToken(userClaim);
                return(ApiResponse.Ok(new SignedInMember()
                {
                    Token = token,
                    Address = member.UserName,
                }));
            }
            return(ApiResponse.BadRequestResult <SignedInMember>("login failure"));
        }
示例#2
0
        private string CreateMemberToken(MemberClaim member)
        {
            var claims = new[]
            {
                new Claim("account", member.Address),
                new Claim("id", member.UserId),
            };

            var jwtTokenKey      = _jwtSetting.JwtTokenKey;
            var jwtTokenIssuer   = _jwtSetting.JwtTokenIssuer;
            var jwtTokenAudience = _jwtSetting.JwtTokenAudience;
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtTokenKey));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var token = new JwtSecurityToken(jwtTokenIssuer, jwtTokenAudience, claims, expires: DateTime.Now.AddDays(30), signingCredentials: creds);

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
示例#3
0
        public async Task <IActionResult> Edit(string memberId)
        {
            Member member = await _member.GetMemberByIdAsync(memberId);

            MemberEditViewModel editVM = new MemberEditViewModel
            {
                EncryptedId = memberId,
                FirstName   = member.FirstName,
                LastName    = member.LastName,
                Email       = member.Email,
            };

            editVM.MemberClaims = new List <MemberClaim>();
            IList <Claim> memberClaims = await _member.GetMemberClaimsAsync(member);

            var claimTypes = Enum.GetValues(typeof(ClaimType));

            foreach (var claimType in claimTypes)
            {
                Claim       claim       = memberClaims.FirstOrDefault(mc => mc.Type == claimType.ToString());
                MemberClaim memberClaim = new MemberClaim();
                if (claim != null)
                {
                    memberClaim.ClaimType   = claim.Type;
                    memberClaim.IsSelected  = Convert.ToBoolean(claim.Value);
                    memberClaim.Description = memberClaim.GetDescription(memberClaim.ClaimType);
                }
                else
                {
                    memberClaim.ClaimType   = claimType.ToString();
                    memberClaim.IsSelected  = false;
                    memberClaim.Description = memberClaim.GetDescription(memberClaim.ClaimType);
                }

                editVM.MemberClaims.Add(memberClaim);
            }

            return(View(editVM));
        }
示例#4
0
        public async Task <ApiResponse <SignedInMember> > CreateMember(MemberCreateRequest request)
        {
            if (string.IsNullOrEmpty(request.Address))
            {
                return(ApiResponse.BadRequestResult <SignedInMember>("invalid address"));
            }

            if (string.IsNullOrEmpty(request.Password))
            {
                return(ApiResponse.BadRequestResult <SignedInMember>("invalid password"));
            }

            var member = new Member()
            {
                UserName = request.Address,
            };

            var createdResult = await _memberManager.CreateAsync(member, request.Password);

            if (!createdResult.Succeeded)
            {
                return(ApiResponse.BadRequestResult <SignedInMember>(createdResult.Errors.FirstOrDefault().Code ?? "create failure"));
            }

            var userClaim = new MemberClaim()
            {
                UserId  = member.Id,
                Address = member.UserName,
            };
            var token = CreateMemberToken(userClaim);

            return(ApiResponse.Ok(new SignedInMember()
            {
                Token = token,
                Address = member.UserName,
            }));
        }