/// <summary> /// Handles the request /// </summary> /// <returns>The awaitable task.</returns> /// <param name="context">The requests context.</param> public override async Task <bool> HandleAsync(IHttpContext context) { var res = await base.HandleAsync(context); if (string.IsNullOrWhiteSpace(context.Request.UserID) || !await DB.RunInTransactionAsync(db => Services.AdminHelper.IsAdmin(db, context.Request.UserID))) { context.Request.UserID = null; context.Response.StatusCode = HttpStatusCode.Forbidden; return(true); } return(res); }
/// <summary> /// Handles a request for the privacy policy document /// </summary> /// <param name="context">The http context</param> /// <returns><c>true</c></returns> public async Task <bool> HandleAsync(IHttpContext context) { var data = await Cache.PrivacyPolicy.TryGetValueAsync(); var encoding = System.Text.Encoding.UTF8; var contenttype = "text/html"; if (data == null) { data = await DB.RunInTransactionAsync(db => Services.TextHelper.GetTextFromDb(db, TextConstants.PrivacyPolicy, "en")); data = Services.MarkdownRenderer.RenderAsHtml((data ?? string.Empty)); await Cache.PrivacyPolicy.SetValueAsync(data); } await context.Response.WriteAllAsync(data, encoding, string.Format("{0}; charset={1}", contenttype, encoding.BodyName)); return(true); }
/// <summary> /// Checks if the user is an admin /// </summary> /// <param name="instance">The database instance to use</param> /// <param name="userid">The ID of the user to check</param> /// <returns>A flag indicating if the user is admin</returns> public static Task <bool> IsAdminAsync(DatabaseInstance instance, string userid) { return(instance.RunInTransactionAsync(db => db.IsAdmin(userid))); }