aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline/Controllers/MyControllerBase.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-05-05 15:58:40 +0800
committercrupest <crupest@outlook.com>2021-05-05 15:58:40 +0800
commit4b413d32ef7b21bc2e35086ae0e695438eec6d43 (patch)
treea5e99c70ca24e827730b15f3ea3aa8664badc24d /BackEnd/Timeline/Controllers/MyControllerBase.cs
parentcc6d33511a6a4c43630a36b13d03db57f432520c (diff)
downloadtimeline-4b413d32ef7b21bc2e35086ae0e695438eec6d43.tar.gz
timeline-4b413d32ef7b21bc2e35086ae0e695438eec6d43.tar.bz2
timeline-4b413d32ef7b21bc2e35086ae0e695438eec6d43.zip
refactor: ...
Diffstat (limited to 'BackEnd/Timeline/Controllers/MyControllerBase.cs')
-rw-r--r--BackEnd/Timeline/Controllers/MyControllerBase.cs76
1 files changed, 76 insertions, 0 deletions
diff --git a/BackEnd/Timeline/Controllers/MyControllerBase.cs b/BackEnd/Timeline/Controllers/MyControllerBase.cs
new file mode 100644
index 00000000..d4ee9d3e
--- /dev/null
+++ b/BackEnd/Timeline/Controllers/MyControllerBase.cs
@@ -0,0 +1,76 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using Timeline.Auth;
+using Timeline.Models.Http;
+using Timeline.Services.User;
+
+namespace Timeline.Controllers
+{
+ public class MyControllerBase : ControllerBase
+ {
+ #region auth
+ protected bool UserHasPermission(UserPermission permission)
+ {
+ return User.HasPermission(permission);
+ }
+
+ protected string? GetOptionalUsername()
+ {
+ return User.GetOptionalName();
+ }
+
+ protected string GetUsername()
+ {
+ return GetOptionalUsername() ?? throw new InvalidOperationException(Resource.ExceptionNoUsername);
+ }
+
+ protected long? GetOptionalUserId()
+ {
+ return User.GetOptionalUserId();
+ }
+
+ protected long GetUserId()
+ {
+ return GetOptionalUserId() ?? throw new InvalidOperationException(Resource.ExceptionNoUserId);
+ }
+ #endregion auth
+
+ #region action result
+ protected ObjectResult StatusCodeWithCommonResponse(int statusCode, int code, string message)
+ {
+ return StatusCode(statusCode, new CommonResponse(code, message));
+ }
+
+ protected ObjectResult OkWithCommonResponse(int statusCode = 0, string? message = null)
+ {
+ return Ok(new CommonResponse(statusCode, message ?? Resource.MessageOperationSucceeded));
+ }
+
+ protected ObjectResult OkWithCommonResponse(string? message)
+ {
+ return OkWithCommonResponse(message: message);
+ }
+
+ protected ObjectResult ForbidWithCommonResponse(string? message = null)
+ {
+ return StatusCode(StatusCodes.Status403Forbidden, new CommonResponse(ErrorCodes.Common.Forbid, message ?? Resource.MessageForbid));
+ }
+
+ protected ObjectResult ForbidWithCommonResponse(int code, string? message = null)
+ {
+ return StatusCode(StatusCodes.Status403Forbidden, new CommonResponse(code, message ?? Resource.MessageForbid));
+ }
+
+ protected ObjectResult DeleteWithCommonDeleteResponse(bool delete = true)
+ {
+ return StatusCode(StatusCodes.Status200OK, CommonDeleteResponse.Create(delete));
+ }
+
+ protected BadRequestObjectResult BadRequestWithCommonResponse(int code, string message)
+ {
+ return BadRequest(new CommonResponse(code, message));
+ }
+ #endregion action result
+ }
+}