Skip to content

Instantly share code, notes, and snippets.

View Ibro's full-sized avatar

Ibrahim Šuta Ibro

View GitHub Profile
using System;
namespace SpanOfT_Dev
{
public class Program
{
private static void Main(string[] args)
{
int[] arr = { 0, 1, 2, 3, 4, 5 };
Span<int> span = arr.AsSpan();
@Ibro
Ibro / Span.cs
Created May 23, 2018 06:19
More C# 7 goodness - Span<T> - Span of T - CodingBlast
int[] arr = { 0, 1, 2, 3, 4, 5 };
Span<int> span = arr.AsSpan();
foreach (var number in span)
{
Console.WriteLine(number);
}
[HttpPost]
[ValidateAntiForgeryToken]
[AuthorizeResource(typeof(InsertCategoryRequirement))]
public async Task<IActionResult> Create([Bind("Id,Name,UserId")] Category category)
{
ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", category.UserId);
// If ModelState isn't valid, return to view immediately
if (!ModelState.IsValid)
{
public class AuthorizeResourceAttribute : TypeFilterAttribute
{
public AuthorizeResourceAttribute(Type requirementType)
: base(typeof(AuthorizeResourceFilter))
{
Arguments = new object[] { requirementType };
}
private class AuthorizeResourceFilter : IAsyncActionFilter
{
public class CategoriesController : Controller
{
private readonly ApplicationDbContext _context;
private readonly IAuthorizationService _authorizationService;
public CategoriesController(ApplicationDbContext context, IAuthorizationService authorizationService)
{
_context = context;
_authorizationService = authorizationService;
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Name,UserId")] Category category)
{
var authorizationResult = await _authorizationService.AuthorizeAsync(User, category, new InsertCategoryRequirement());
if (!authorizationResult.Succeeded) // If user has no access show him 403
{
return new ForbidResult();
}
public class InsertCategoryHandler : AuthorizationHandler<InsertCategoryRequirement, Category>, IAuthorizationRequirement
{
private readonly ISecurityService _securityService;
public InsertCategoryHandler(ISecurityService securityService) => _securityService = securityService;
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context,
InsertCategoryRequirement requirement, Category category)
{
@Ibro
Ibro / CategoriesController.cs
Created April 24, 2018 19:09
Categories - create with AuthService in action
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Name,UserId")] Category category)
{
ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", category.UserId);
// If ModelState isn't valid, return to view immediately
if (!ModelState.IsValid)
{
return View(category);
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Name,UserId")] Category category)
{
// Populate UserId select list.
ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", category.UserId);
// If ModelState isn't valid, return to view immediately
if (!ModelState.IsValid)
{
public class ApplicationDbContext : IdentityDbContext<ApplicationUser, ApplicationRole, string>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<Category> Categories { get; set; }
}