From 1a1c8e71fcd14858f595029f089b2d4a00202b32 Mon Sep 17 00:00:00 2001
From: ogi <Administrator@S-OGI-PC>
Date: Fri, 05 Dec 2025 09:24:16 +0900
Subject: [PATCH] プロジェクトファイルを追加。

---
 HotelPms.GrpcService/Services/AuthService.cs |   67 +++++++++++++++++++++++++++++++++
 1 files changed, 67 insertions(+), 0 deletions(-)

diff --git a/HotelPms.GrpcService/Services/AuthService.cs b/HotelPms.GrpcService/Services/AuthService.cs
new file mode 100644
index 0000000..0032493
--- /dev/null
+++ b/HotelPms.GrpcService/Services/AuthService.cs
@@ -0,0 +1,67 @@
+using HotelPms.Data;
+using Grpc.Core;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Logging;
+using Microsoft.IdentityModel.Tokens;
+using System;
+using System.IdentityModel.Tokens.Jwt;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HotelPms.GrpcService
+{
+    /// <summary>
+    /// 認証処理
+    /// </summary>
+    public class AuthService : AuthCore.AuthCoreBase
+    {
+        private readonly ILogger<BuildingService> _logger;
+        private IConfiguration m_Configuration;
+
+        public AuthService(ILogger<BuildingService> logger, IConfiguration configuration)
+        {
+            _logger = logger;
+            m_Configuration = configuration;
+        }
+
+        public override Task<LoginResult> Login(DataRequest request, ServerCallContext context)
+        {
+            LoginResult ret = new LoginResult() { ErrNo = 0, ErrData = string.Empty, AccessToKen = string.Empty, RefreshToKen = string.Empty };
+
+            //DBチェック
+            //var result = await _signInManager.PasswordSignInAsync(login.Email, login.Password, false, false);
+
+            //if (!result.Succeeded) return BadRequest(new LoginResult { Successful = false, Error = "Username and password are invalid." });
+
+            var claims = new[]
+            {
+                new Claim(ClaimTypes.Name, request.LoginID)
+            };
+
+            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(m_Configuration["JwtSecurityKey"]));
+            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
+            var expiry = DateTime.Now.AddDays(Convert.ToInt32(m_Configuration["JwtExpiryInDays"]));
+            //var expiry = DateTime.Now.AddSeconds(30);   //在 .net core 中有一个属性的值,默认是300,也就是5分钟后,假如生命周期设置的是30秒,还需要加上这300秒 //在验证令牌生命周期时间到后,立即过期;默认的是300秒 ClockSkew = TimeSpan.Zero, 按自己理解的注释的,
+
+
+            var token = new JwtSecurityToken(
+                m_Configuration["JwtIssuer"],
+                m_Configuration["JwtAudience"],
+                claims,
+                expires: expiry,
+                signingCredentials: creds
+            );
+
+            ret.AccessToKen = new JwtSecurityTokenHandler().WriteToken(token);
+            return Task.FromResult(ret);
+        }
+
+        public override Task<LoginResult> Logout(DataRequest request, ServerCallContext context)
+        {
+            LoginResult ret = new LoginResult() { ErrNo = 0, ErrData = string.Empty, AccessToKen = string.Empty, RefreshToKen = string.Empty };
+
+            return Task.FromResult(ret);
+        }
+    }
+}

--
Gitblit v1.10.0