diff options
author | vlad <vlad@driver.xyz> | 2017-02-22 18:52:54 -0800 |
---|---|---|
committer | vlad <vlad@driver.xyz> | 2017-02-22 18:52:54 -0800 |
commit | d5fd8f858dfc8e21dbe8ee365e5d9017090812e7 (patch) | |
tree | c6b59c444e68dba2901b5ccd0e07a180b609ecd1 | |
parent | 3c9b0ed55e3721595dafa273b015dec6add8c18b (diff) | |
download | driver-core-d5fd8f858dfc8e21dbe8ee365e5d9017090812e7.tar.gz driver-core-d5fd8f858dfc8e21dbe8ee365e5d9017090812e7.tar.bz2 driver-core-d5fd8f858dfc8e21dbe8ee365e5d9017090812e7.zip |
More logging for authorization
-rw-r--r-- | src/main/scala/xyz/driver/core/app.scala | 8 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/rest.scala | 4 | ||||
-rw-r--r-- | src/test/scala/xyz/driver/core/AuthTest.scala | 2 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/app.scala b/src/main/scala/xyz/driver/core/app.scala index 5482b3b..68c7cf0 100644 --- a/src/main/scala/xyz/driver/core/app.scala +++ b/src/main/scala/xyz/driver/core/app.scala @@ -1,5 +1,7 @@ package xyz.driver.core +import java.sql.SQLException + import akka.actor.ActorSystem import akka.http.scaladsl.Http import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport @@ -102,6 +104,12 @@ object app { complete( HttpResponse(Conflict, entity = "Resource was changed concurrently, try requesting a newer version"))(ctx) + case sex: SQLException => + ctx => + val trackingId = rest.extractTrackingId(ctx) + log.audit(s"Database exception for the resource ${ctx.request.uri} ($trackingId)", sex) + complete(HttpResponse(InternalServerError, entity = "Data access error"))(ctx) + case t: Throwable => ctx => val trackingId = rest.extractTrackingId(ctx) diff --git a/src/main/scala/xyz/driver/core/rest.scala b/src/main/scala/xyz/driver/core/rest.scala index 5e77ecd..da6df96 100644 --- a/src/main/scala/xyz/driver/core/rest.scala +++ b/src/main/scala/xyz/driver/core/rest.scala @@ -87,6 +87,7 @@ object rest { protected implicit val execution: ExecutionContext protected val authorization: Authorization + protected val log: Logger /** * Specific implementation on how to extract user from request context, @@ -113,13 +114,16 @@ object rest { else { val challenge = HttpChallenges.basic(s"User does not have the required permissions: ${permissions.mkString(", ")}") + log.error(s"User $user does not have the required permissions: ${permissions.mkString(", ")}") reject(AuthenticationFailedRejection(CredentialsRejected, challenge)) } case Success(None) => + log.error(s"Wasn't able to find authenticated user for the token provided to verify ${permissions.mkString(", ")}") reject(ValidationRejection(s"Wasn't able to find authenticated user for the token provided")) case Failure(t) => + log.error(s"Wasn't able to verify token for authenticated user to verify ${permissions.mkString(", ")}", t) reject(ValidationRejection(s"Wasn't able to verify token for authenticated user", Some(t))) } } diff --git a/src/test/scala/xyz/driver/core/AuthTest.scala b/src/test/scala/xyz/driver/core/AuthTest.scala index 9045832..c6df168 100644 --- a/src/test/scala/xyz/driver/core/AuthTest.scala +++ b/src/test/scala/xyz/driver/core/AuthTest.scala @@ -8,6 +8,7 @@ import akka.http.scaladsl.testkit.ScalatestRouteTest import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} import xyz.driver.core.auth._ +import xyz.driver.core.logging.NoLogger import xyz.driver.core.rest.{AuthProvider, Authorization, ServiceRequestContext} import scala.concurrent.Future @@ -23,6 +24,7 @@ class AuthTest extends FlatSpec with Matchers with MockitoSugar with ScalatestRo val authStatusService: AuthProvider[User] = new AuthProvider[User] { override implicit val execution = scala.concurrent.ExecutionContext.global + override val log = NoLogger override protected val authorization: Authorization = new Authorization { override def userHasPermission(user: User, permission: Permission)( |