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")); }
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)); }
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)); }
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, })); }