public static Task OnCreatingTicket( OAuthCreatingTicketContext context) { var user = ModixUser.FromClaimsPrincipal(context.Principal); var userIsInGuilds = context.HttpContext.RequestServices.GetRequiredService <IDiscordSocketClient>() .Guilds.Any(x => x.GetUser(user.UserId) is { });
public async Task <IActionResult> AutocompleteUsers(string query) { await UserGuild.DownloadUsersAsync(); var result = UserGuild.Users is null ? Enumerable.Empty <ModixUser>() : UserGuild.Users .Where(d => d.Username.OrdinalContains(query)) .Take(10) .Select(d => ModixUser.FromSocketGuildUser(d)); return(Ok(result)); }
protected override async Task <AuthenticationTicket> CreateTicketAsync(ClaimsIdentity identity, AuthenticationProperties properties, OAuthTokenResponse tokens) { var baseResult = await base.CreateTicketAsync(identity, properties, tokens); var result = ModixUser.FromClaimsPrincipal(baseResult.Principal); var userWasfound = _client.Guilds.Any(d => d.GetUser(result.UserId) != null); if (!userWasfound) { throw new UnauthorizedAccessException("You must be a member of one of Modix's servers to log in."); } return(baseResult); }
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { if (!DiscordSocketClient.Guilds.Any()) { return; } if (HttpContext.User == null) { await HttpContext.ChallengeAsync(); return; } //Parse the ID to look up socket user ModixUser = ModixUser.FromClaimsPrincipal(HttpContext.User); var guildCookie = Request.Cookies["SelectedGuild"]; ISocketGuild guildToSearch; if (!string.IsNullOrWhiteSpace(guildCookie)) { var guildId = ulong.Parse(guildCookie); guildToSearch = DiscordSocketClient.GetGuild(guildId); } else { guildToSearch = DiscordSocketClient.Guilds.First(); } SocketUser = guildToSearch?.GetUser(ModixUser.UserId); if (SocketUser is null) { await HttpContext.ChallengeAsync(); return; } await AssignClaims(); //Do it again here to assign claims (this is very lazy of us) ModixUser = ModixUser.FromClaimsPrincipal(HttpContext.User); ModixUser.SelectedGuild = SocketUser.Guild.Id; ModixUser.AvatarHash = SocketUser.GetAvatarUrl() ?? SocketUser.GetDefaultAvatarUrl(); await next(); }
public async Task <IActionResult> AutocompleteUsers(string query) { var result = UserGuild?.Users is null ? Enumerable.Empty <ModixUser>() : UserGuild.Users .Where(d => d.Username.OrdinalContains(query) || d.Id.ToString() == query) .Take(10) .Select(ModixUser.FromIGuildUser); if (!result.Any() && ulong.TryParse(query, out var userId)) { var user = await _userService.GetUserInformationAsync(UserGuild.Id, userId); if (user != null) { result = result.Append(ModixUser.FromIGuildUser(user)); } } return(Ok(result)); }