Skip to content

Instantly share code, notes, and snippets.

View MahdiKarimipour's full-sized avatar
🎯
Focusing

MK MahdiKarimipour

🎯
Focusing
  • TechnologyLeads
  • Sydney, Australia
View GitHub Profile
@MahdiKarimipour
MahdiKarimipour / external-auth-google-middleware-path-set.cs
Last active August 10, 2021 02:52
Set Path in Google Middleware
app.UseHsts();
app.Use((context, next) =>
{
context.Request.Host = new HostString("api.domain.com);
context.Request.PathBase = new PathString("/identity"); //if you need this
context.Request.Scheme = "https";
return next();
});
@MahdiKarimipour
MahdiKarimipour / external-auth-google-login-initiator.cs
Created August 10, 2021 00:33
Initiating External Login Backend Process
[HttpPost]
[AllowAnonymous]
[Route("account/external-login")]
public IActionResult ExternalLogin(string provider, string returnUrl)
{
var redirectUrl = $"https://api.domain.com/identity/v1/account/external-auth-callback?returnUrl={returnUrl}";
var properties = signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
properties.AllowRefresh = true;
return Challenge(properties, provider);
}
@MahdiKarimipour
MahdiKarimipour / external-auth-google-frontend-form.jsx
Last active August 10, 2021 00:34
Google Authentication UI for React
<form method='POST' action={`https://api.domain.com/identity/v1/account/external-login?provider=Google&returnUrl=/home`} >
<Button
type="submit"
name='provider'
value='Google'
title={`Login using Google`}>
<img src='link-to-google-logo'} alt="" />
Gooogle
</PageButton>
</form>
@MahdiKarimipour
MahdiKarimipour / api-monitoring-structured-logging-use-of-middleware.cs
Created August 9, 2021 04:40
Use of Serilog Middleware to Inject Contextual Properties into Logs
app.UseAuthentication();
app.UseAuthorization();
app.UseSerilogRequestLogging();
app.UseMiddleware<LogContextEnrichment>();
public class LogContextEnrichment
{
private readonly RequestDelegate next;
public LogContextEnrichment(RequestDelegate next)
{
this.next = next;
}
public async Task Invoke(HttpContext context, UserContext userContext, RequestContext requestContext, IDiagnosticContext diagnosticContext)
@MahdiKarimipour
MahdiKarimipour / api-monitoring-structured-logging-push-property.cs
Last active August 9, 2021 04:28
Using LogContext.PushProperty to Inject Additional Properties in a Limited Scope
using (LogContext.PushProperty("CorrelationId", context.GetCorrelationId()))
{
logger.LogInformation('User {userId} placed a new order {orderId}', '27836478', 98733);
}
_logger
.ForContext("OrderId", paymentId)
.ForContext("State", state)
.Information("Storing payment state in database");
@MahdiKarimipour
MahdiKarimipour / api-monitoring-structured-logging-configuration.json
Created August 9, 2021 02:34
Log Configuration for Serilog in Asp.NET 5.0 APIs
{
"AppSettings": {
"Monitoring": {
"AzureApplicationInsightsInstrumentationKey": "5303b86c-d318-4a74-8a43-85dae307dd38"
}
},
"Serilog": {
"Using": [
"Serilog.Sinks.ApplicationInsights"
],
@MahdiKarimipour
MahdiKarimipour / api-monitoring-structured-logging-serilog-configuration.cs
Last active August 9, 2021 07:40
Serilog Configuration for Asp.NET 5.0 API
public class LoggingConfigurations
{
public static ILogger GetLogger()
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false)
.Build();
@MahdiKarimipour
MahdiKarimipour / api-monitoring-structured-logging-cover-main.cs
Last active August 9, 2021 07:41
Cover Asp.NET Main Entry Point for Logging Fatal Errors
public static void Main(string[] args)
{
Log.Logger = LoggingConfigurations.GetLogger();
try
{
Log.Information("Application starting up.");
CreateHostBuilder(args).Build().Run();
}