public IActionResult FindAllInvitationNotifications(long userId, int skip, int count) { try { var dbr = new DatabaseRepository(_logger, _env); var lstInvitations = new List <InvitationDetails>(); var notifications = dbr.FindWithRangeDesct <Notifications>(t => t.UserId == userId && t.MsgStatus == "Invited", skip, count, t => t.Id).ToList(); foreach (var notify in notifications) { var groupMember = dbr.Single <Groupmembers>(t => t.id == notify.MsgId && t.userId == userId); if (groupMember == null) { continue; } var invitation = new InvitationDetails { GroupId = groupMember.groupid, Message = notify.NotificationType, EmailId = groupMember.email, MemberCode = groupMember.memberCode, UserId = groupMember.userId, NotifyId = notify.Id }; lstInvitations.Add(invitation); } return(Ok(lstInvitations)); } catch (Exception ex) { return(NotFound()); } }
public string GetInvitationUrl(ClaimsPrincipal inviter, InvitationDetails invite) { var tokenOptions = _tokenOptions.CurrentValue; var issuer = inviter.FindFirstValue("iss").Split('/'); var domainName = issuer[2].Split('.')[0]; var tenantId = issuer[3]; var clientId = inviter.FindFirstValue("azp"); var claims = new Dictionary <string, string>(); if (invite.additionalClaims != null) { foreach (var c in invite.additionalClaims) { claims.Add(c.Key, c.Value); } } claims.Add("appTenantId", inviter.FindFirstValue("appTenantId")); var jwt = CreateJWTToken(invite.inviteEmail, domainName, domainName, _tokenOptions.CurrentValue.SigningKey, tokenOptions.ValidityMinutes, claims); var url = $"https://{domainName}.b2clogin.com/{tenantId}/{tokenOptions.Policy}/oauth2/v2.0/authorize?client_id={clientId}&login_hint={invite.inviteEmail}&response_mode=form_post&nonce=defaultNonce&redirect_uri={invite.postRedeemUrl}&scope=openid&response_type=id_token&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={jwt}"; return(url); }
public string Invite([FromBody] InvitationDetails invite) { return(_inviter.GetInvitationUrl(User, invite)); }
public string Invite([FromBody] InvitationDetails invite) { HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi); return(_inviter.GetInvitationUrl(User, invite)); }