Skip to content

Instantly share code, notes, and snippets.

@meriturva
meriturva / HangfireDashboardAuthorizationFilter.cs
Last active January 25, 2023 09:23
Hangfire Dashboard Jwt Authorization Filter
public class HangfireDashboardJwtAuthorizationFilter : IDashboardAuthorizationFilter
{
private static Logger logger = LogManager.GetCurrentClassLogger();
private static readonly string HangFireCookieName = "HangFireCookie";
private static readonly int CookieExpirationMinutes = 60;
private TokenValidationParameters tokenValidationParameters;
private string role;
public HangfireDashboardJwtAuthorizationFilter(TokenValidationParameters tokenValidationParameters, string role = null)
{
@meriturva
meriturva / Startup.cs
Created June 9, 2019 17:16
Configure Hangfire Dashboard Jwt Authorization Filter
var options = new DashboardOptions
{
Authorization = new IDashboardAuthorizationFilter[]
{
new HangfireDashboardJwtAuthorizationFilter(this.tokenValidationParameters, "Admin")
}
};
app.UseHangfireDashboard("/main/admin/hangfire", options);
@meriturva
meriturva / Notification.cs
Last active August 22, 2019 14:23
Notification.cs
public class Notification
{
public long Id { get; set; }
public string TemplateName { get; set; }
public long UserId { get; set; }
public string EntityId { get; set; }
public DateTime Date { get; set; }
public DateTime? EmailNotificationSentDate { get; set; }
public DateTime? PushNotificationSentDate { get; set; }
}
@meriturva
meriturva / DDTConfiguration.cs
Last active August 22, 2019 15:09
DDTConfiguration.cs
public class DDTConfiguration : IEntityTypeConfiguration<DDT>
{
public void Configure(EntityTypeBuilder<DDT> builder)
{
builder.ToTable("DDT");
builder.HasKey(ddt => new { ddt.Prefix, ddt.Id, ddt.Date });
builder.Property(ddt => ddt.Id).HasColumnName("Id");
builder.Property(ddt => ddt.UserId).HasColumnName("UserId");
@meriturva
meriturva / Repository.cs
Last active August 22, 2019 14:24
Repository.cs
protected virtual object[] GetKeysValues(TEntity entity)
{
var entry = Context.Entry(entity);
return entry.Metadata.FindPrimaryKey()
.Properties
.Select(p => entry.Property(p.Name).CurrentValue)
.ToArray();
}
public string GenerateEntityId(TEntity entity)
protected virtual Type[] GetKeysTypes()
{
var model = Context.Set<TEntity>().GetService<IDbContextServices>().Model;
var entityType = model.FindEntityType(typeof(TEntity).ToString());
return entityType.FindPrimaryKey()
.Properties
.Select(p => p.ClrType)
.ToArray();
}
@meriturva
meriturva / app.js
Created January 8, 2020 20:39
Esempio di chiamate asincrone con ExpressJS
var express = require('express');
var app = express();
// Solo un semplice metodo di test
app.get('/', (req, res) => {
res.send('Hello World!');
});
// Qui faccio la send dentro alla then
app.get('/test1', (req, res) => {
<?xml version="1.0" encoding="utf-8"?>
<!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xsi:schemaLocation="NLog NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">
<extensions>
<add assembly="Sentry.NLog" />
</extensions>
<targets>
<target xsi:type="File" name="file" layout="${date}|${level:uppercase=true}|${message} ${exception:format=tostring}|${logger}|${all-event-properties}" fileName="${basedir}/logs/logfile.txt" archiveFileName="${basedir}/logs/logfile.{#}.txt" archiveEvery="Day" maxArchiveFiles="7" />
<?xml version="1.0" encoding="utf-8"?>
<!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xsi:schemaLocation="NLog NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">
<extensions>
<add assembly="Sentry.NLog" />
</extensions>
<targets>
<target xsi:type="File" name="file" layout="${date}|${level:uppercase=true}|${message} ${exception:format=tostring}|${logger}|${all-event-properties}" fileName="${basedir}/logs/logfile.txt" archiveFileName="${basedir}/logs/logfile.{#}.txt" archiveEvery="Day" maxArchiveFiles="7" />
@meriturva
meriturva / readAngularWorkspaceRAW.ts
Last active July 21, 2020 20:09
A simple example how to load and to parse angular.json in RAW mode
import * as path from 'path';
import { from } from 'rxjs';
import { filter, tap } from 'rxjs/operators';
const angularFile = require(path.join(__dirname, 'angular.json'));
console.log('Start: do something only on my libraries');
from(Object.keys(angularFile.projects)).pipe(
filter(key => angularFile.projects[key].projectType === 'library'),