|
@@ -231,6 +231,29 @@ namespace TEAMModelOS.Controllers.Client
|
|
});
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ int timezone = 8;
|
|
|
|
+ if (HttpContext.Request.Headers.TryGetValue("Time-Zone", out var Time_Zone) && int.TryParse(Time_Zone, out int tz))
|
|
|
|
+ {
|
|
|
|
+ timezone=tz;
|
|
|
|
+ }
|
|
|
|
+ if (!string.IsNullOrWhiteSpace(school.timeZone?.value))
|
|
|
|
+ {
|
|
|
|
+ string timeZoneOffsetString = school.timeZone.value;
|
|
|
|
+ bool plus = true;
|
|
|
|
+ if (timeZoneOffsetString.Contains("-"))
|
|
|
|
+ {
|
|
|
|
+ plus=false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 去除时区偏移字符串中的正负号
|
|
|
|
+ timeZoneOffsetString = timeZoneOffsetString.Replace("+", "").Replace("-", "");
|
|
|
|
+ // 尝试解析格式化后的时区偏移字符串
|
|
|
|
+ if (TimeSpan.TryParse(timeZoneOffsetString, out TimeSpan timeZoneOffset))
|
|
|
|
+ {
|
|
|
|
+ // 将时区偏移转换为小时数
|
|
|
|
+ timezone = plus ? (int)timeZoneOffset.TotalHours : -(int)timeZoneOffset.TotalHours;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
var id_token = new JwtSecurityToken($"{join.id_token}");
|
|
var id_token = new JwtSecurityToken($"{join.id_token}");
|
|
var auth_token = string.Empty;
|
|
var auth_token = string.Empty;
|
|
var response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(id_token.Payload.Sub, new PartitionKey($"Teacher-{join.school}"));
|
|
var response = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(id_token.Payload.Sub, new PartitionKey($"Teacher-{join.school}"));
|
|
@@ -238,7 +261,7 @@ namespace TEAMModelOS.Controllers.Client
|
|
id_token.Payload.TryGetValue("name", out object name);
|
|
id_token.Payload.TryGetValue("name", out object name);
|
|
id_token.Payload.TryGetValue("picture", out object picture);
|
|
id_token.Payload.TryGetValue("picture", out object picture);
|
|
SchoolTeacher schoolTeacher = JsonDocument.Parse(response.ContentStream).RootElement.ToObject<SchoolTeacher>();
|
|
SchoolTeacher schoolTeacher = JsonDocument.Parse(response.ContentStream).RootElement.ToObject<SchoolTeacher>();
|
|
- auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, id_token.Payload.Sub, $"{name}",$"{picture}", _option.JwtSecretKey, Website: "IES", scope: Constant.ScopeTeacher, schoolID: join.school, areaId: school.areaId, standard: school.standard, roles: schoolTeacher.roles.ToArray(), permissions:schoolTeacher.permissions.ToArray(), expire: 1);
|
|
|
|
|
|
+ auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, id_token.Payload.Sub, $"{name}",$"{picture}", _option.JwtSecretKey, Website: "IES", timezone: timezone, scope: Constant.ScopeTeacher, schoolID: join.school, areaId: school.areaId, standard: school.standard, roles: schoolTeacher.roles.ToArray(), permissions:schoolTeacher.permissions.ToArray(), expire: 1);
|
|
|
|
|
|
}
|
|
}
|
|
await SystemService.RecordAccumulateData(_azureRedis, _dingDing, new SDK.Models.Dtos.Accumulate { client="hita", count=1, id=school.id, key="teacher_login", name=school.name, scope="school", target=school.id });
|
|
await SystemService.RecordAccumulateData(_azureRedis, _dingDing, new SDK.Models.Dtos.Accumulate { client="hita", count=1, id=school.id, key="teacher_login", name=school.name, scope="school", target=school.id });
|
|
@@ -250,6 +273,11 @@ namespace TEAMModelOS.Controllers.Client
|
|
[HttpGet("check-login")]
|
|
[HttpGet("check-login")]
|
|
public async Task<IActionResult> CheckLogin([FromQuery] HiTAJoinSchool join)
|
|
public async Task<IActionResult> CheckLogin([FromQuery] HiTAJoinSchool join)
|
|
{
|
|
{
|
|
|
|
+ int timezone = 8;
|
|
|
|
+ if (HttpContext.Request.Headers.TryGetValue("Time-Zone", out var Time_Zone) && int.TryParse(Time_Zone, out int tz))
|
|
|
|
+ {
|
|
|
|
+ timezone=tz;
|
|
|
|
+ }
|
|
var data = await _azureRedis.GetRedisClient(8).StringGetAsync($"HiTA:Login:{join.code}");
|
|
var data = await _azureRedis.GetRedisClient(8).StringGetAsync($"HiTA:Login:{join.code}");
|
|
if (data.HasValue)
|
|
if (data.HasValue)
|
|
{
|
|
{
|
|
@@ -275,7 +303,7 @@ namespace TEAMModelOS.Controllers.Client
|
|
jwt.Payload.TryGetValue("picture", out picture);
|
|
jwt.Payload.TryGetValue("picture", out picture);
|
|
jwt.Payload.TryGetValue("lang", out object _jwtlang);
|
|
jwt.Payload.TryGetValue("lang", out object _jwtlang);
|
|
(string ip, string region) = await LoginService.LoginIp(HttpContext, _searcher);
|
|
(string ip, string region) = await LoginService.LoginIp(HttpContext, _searcher);
|
|
- TeacherInfo teacherInfo= await TeacherService.TeacherInfoLite(_azureCosmos, $"{name}", $"{picture}", $"{jwt.Payload.Sub}", _azureStorage, _option, _azureRedis, "", _httpTrigger, $"{_jwtlang}");
|
|
|
|
|
|
+ TeacherInfo teacherInfo= await TeacherService.TeacherInfoLite(_azureCosmos, $"{name}", $"{picture}", $"{jwt.Payload.Sub}", _azureStorage, _option, _azureRedis, "", _httpTrigger, $"{_jwtlang}",timezone);
|
|
string x_auth_token = string.Empty;
|
|
string x_auth_token = string.Empty;
|
|
if (teacherInfo!=null) {
|
|
if (teacherInfo!=null) {
|
|
x_auth_token= teacherInfo.auth_token;
|
|
x_auth_token= teacherInfo.auth_token;
|