Skip to content

Instantly share code, notes, and snippets.

View ntakouris's full-sized avatar
🤖
Building robots

Theodoros Ntakouris ntakouris

🤖
Building robots
View GitHub Profile
services.AddSwaggerGen(x =>
{
x.SwaggerDoc("v1", new OpenApiInfo{ Title = "Tweetbook API", Version = "v1" });
x.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the bearer scheme",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
public void Dispose()
{
using var serviceScope = _serviceProvider.CreateScope();
var context = serviceScope.ServiceProvider.GetService<DataContext>();
context.Database.EnsureDeleted();
}
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Tweetbook.Contracts.V1;
using Tweetbook.Contracts.V1.Requests;
using Tweetbook.Domain;
using Tweetbook.Extensions;
services.AddAuthorization( options =>
{
options.AddPolicy("TagViewer", builder => builder.RequireClaim("tags.view", "true"));
});
services.AddAuthorization( options =>
{
options.AddPolicy("TagViewer", builder => builder.RequireClaim("tags.view", "true"));
});
using (var serviceScope = host.Services.CreateScope())
{
var roleManager = serviceScope.ServiceProvider.GetRequiredService<RoleManager<IdentityRole>>();
if (!await roleManager.RoleExistsAsync("Admin"))
{
var adminRole = new IdentityRole("Admin");
await roleManager.CreateAsync(adminRole);
}
public class WorksForCompanyHandler : AuthorizationHandler<WorksForCompanyRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, WorksForCompanyRequirement requirement)
{
var userEmailAddress = context.User?.FindFirstValue(ClaimTypes.Email) ?? string.Empty;
if (userEmailAddress.EndsWith(requirement.DomainName))
{
context.Succeed(requirement);
return Task.CompletedTask;
}
public class WorksForCompanyRequirement : IAuthorizationRequirement
{
public string DomainName { get; }
public WorksForCompanyRequirement(string domainName)
{
DomainName = domainName;
}
}
services.AddAuthorization(options =>
{
options.AddPolicy("MustWorkForChapsas", policy =>
{
policy.AddRequirements(new WorksForCompanyRequirement("chapsas.com"));
});
});
services.AddSingleton<IAuthorizationHandler, WorksForCompanyHandler>();
public class Post
{
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public string UserId { get; set; }
[ForeignKey(nameof(UserId))]