Reduce Unauthenticated Errors in Sentry (#238)

* Updated README to be explicit that kavita.db needs to be writable.

* Implemented a new Exception type that is for throwing a message to UI without logging in Sentry.
This commit is contained in:
Joseph Milazzo 2021-06-01 06:57:46 -05:00 committed by GitHub
parent 0a39a17407
commit aaad82cb7a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 1 deletions

View File

@ -1,4 +1,5 @@
using System.Security.Claims;
using Kavita.Common;
namespace API.Extensions
{
@ -6,7 +7,9 @@ namespace API.Extensions
{
public static string GetUsername(this ClaimsPrincipal user)
{
return user.FindFirst(ClaimTypes.NameIdentifier)?.Value;
var userClaim = user.FindFirst(ClaimTypes.NameIdentifier);
if (userClaim == null) throw new KavitaException("User is not authenticated");
return userClaim.Value;
}
}
}

View File

@ -99,6 +99,7 @@ namespace API
options.AddExceptionFilterForType<OutOfMemoryException>();
options.AddExceptionFilterForType<NetVips.VipsException>();
options.AddExceptionFilterForType<InvalidDataException>();
options.AddExceptionFilterForType<KavitaException>();
options.BeforeSend = sentryEvent =>
{

View File

@ -0,0 +1,21 @@
using System;
namespace Kavita.Common
{
/// <summary>
/// These are used for errors to send to the UI that should not be reported to Sentry
/// </summary>
[Serializable]
public class KavitaException : Exception
{
public KavitaException()
{
}
public KavitaException(string message) : base(message)
{
}
}
}

View File

@ -40,6 +40,7 @@ your reading collection with your friends and family!
## How to install
- Unzip the archive for your target OS
- Place in a directory that is writable. If on windows, do not place in Program Files
- Linux users must ensure the directory & kavita.db is writable by Kavita (might require starting server once)
- Run Kavita
- If you are updating, do not copy appsettings.json from the new version over. It will override your TokenKey and you will have to reauthenticate on your devices.