|
@@ -77,7 +77,7 @@ namespace TEAMModelOS.Controllers
|
|
|
///教师的总空间 包含 个人空间和学校赠送的空间累加
|
|
|
total = teacher.size;
|
|
|
//检查是否有加入学校,如果加入学校,则当个人空间size是0G的时候,则免费获得一个G空间,但无论加入多少个学校,只能获取一次 1G的免费空间。没有加入学校则默认0G空间,除非自己购买空间
|
|
|
- int joinCount = 0;
|
|
|
+
|
|
|
if (teacher.schools.IsNotEmpty()) {
|
|
|
foreach (var sc in teacher.schools) {
|
|
|
string statusNow = sc.status!=null?sc.status:"";
|
|
@@ -90,7 +90,7 @@ namespace TEAMModelOS.Controllers
|
|
|
schoolExtobj.status =sc.status;
|
|
|
schoolExtobj.time = sc.time;
|
|
|
schoolExtobj.picture = school.RootElement.GetProperty("picture");
|
|
|
- joinCount += 1;
|
|
|
+
|
|
|
var sctch = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(id, new PartitionKey($"Teacher-{sc.schoolId}"));
|
|
|
if (sctch.Status == 200)
|
|
|
{
|
|
@@ -112,10 +112,13 @@ namespace TEAMModelOS.Controllers
|
|
|
schools.Add(schoolExtobj);
|
|
|
}
|
|
|
}
|
|
|
- //如果加入学校的数量大于1,并且个人空间小于等于0,则可以免费获得1G空间
|
|
|
- //如果有申请或者加入学校,但是未分配空间则都可以得到1G免费空间
|
|
|
- if (total <= 0 && joinCount > 0)
|
|
|
+ //如果包含任何申请,邀请,加入学校的记录 且个人空间未分配2G 则默认分配个人空间至2G.
|
|
|
+ if ( teacher.size<2 && teacher.schools.Count > 0)
|
|
|
{
|
|
|
+ teacher.size = 2;
|
|
|
+ }
|
|
|
+ //如果未包含任何申请,邀请,加入学校的记录 且 个人空间没有分配1G 则默认赠送一个G
|
|
|
+ if (teacher.schools.Count == 0 && teacher.size<1) {
|
|
|
teacher.size = 1;
|
|
|
}
|
|
|
}
|
|
@@ -133,10 +136,13 @@ namespace TEAMModelOS.Controllers
|
|
|
code = "Base",
|
|
|
name = name?.ToString(),
|
|
|
picture = picture?.ToString(),
|
|
|
- size = 0,
|
|
|
+ //创建账号并第一次登录IES5则默认赠送1G
|
|
|
+ size = 1,
|
|
|
defaultSchool = null,
|
|
|
schools = new List<Teacher.School>(),
|
|
|
};
|
|
|
+ var container = _azureStorage.GetBlobContainerClient(id);
|
|
|
+ await container.CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
|
|
|
teacher = await _azureCosmos.GetCosmosClient().GetContainer("TEAMModelOS", "Teacher").CreateItemAsync<Teacher>(teacher, new PartitionKey("Base"));
|
|
|
}
|
|
|
}
|
|
@@ -180,10 +186,7 @@ namespace TEAMModelOS.Controllers
|
|
|
|
|
|
//換取AuthToken,提供給前端
|
|
|
var auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, id, name?.ToString(), picture?.ToString(), _option.JwtSecretKey, roles: new[] { "teacher" });
|
|
|
-
|
|
|
//取得Teacher Blob 容器位置及SAS
|
|
|
- var container = _azureStorage.GetBlobContainerClient(id);
|
|
|
- await container.CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
|
|
|
var (blob_uri, blob_sas) = _azureStorage.GetBlobContainerSAS(id, BlobContainerSasPermissions.Write | BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List | BlobContainerSasPermissions.Delete);
|
|
|
return Ok(new { auth_token, blob_uri, blob_sas, schools, defaultschool, courses, total, tsize });
|
|
|
|
|
@@ -557,12 +560,21 @@ namespace TEAMModelOS.Controllers
|
|
|
inSchools.ForEach(x => teacher.schools.Remove(x));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (teacher.schools.Count > 0 && teacher.size <= 1)
|
|
|
+ {
|
|
|
+ teacher.size = 2;
|
|
|
+ }
|
|
|
await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<Teacher>(teacher, id, new PartitionKey("Base"));
|
|
|
var sresponse = await client.GetContainer("TEAMModelOS", "School").DeleteItemStreamAsync(id, new PartitionKey($"Teacher-{school_code}"));
|
|
|
return Ok(new { stauts = 1 });
|
|
|
}
|
|
|
else {
|
|
|
-
|
|
|
+ var dft = new List<string>() { "content-read", "exercise-read", "knowledge-read", "syllabus-read" };
|
|
|
+ if (teacher.schools.Count > 0 && teacher.size <= 1)
|
|
|
+ {
|
|
|
+ teacher.size = 2;
|
|
|
+ }
|
|
|
await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<Teacher>(teacher, id, new PartitionKey("Base"));
|
|
|
//在學校表處理該學校教師帳號的狀態
|
|
|
var sresponse = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(id, new PartitionKey($"Teacher-{school_code}"));
|
|
@@ -571,6 +583,20 @@ namespace TEAMModelOS.Controllers
|
|
|
using var json = await JsonDocument.ParseAsync(sresponse.ContentStream);
|
|
|
SchoolTeacher steacher = json.ToObject<SchoolTeacher>();
|
|
|
steacher.status = grant_type.GetString();
|
|
|
+ if (grant_type.ToString().Equals("join")) {
|
|
|
+ if (steacher.permissions.IsNotEmpty())
|
|
|
+ {
|
|
|
+ foreach (var d in dft) {
|
|
|
+ if (!steacher.permissions.Contains(d))
|
|
|
+ {
|
|
|
+ steacher.permissions.Add(d);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ steacher.permissions = dft;
|
|
|
+ }
|
|
|
+ }
|
|
|
var response = await client.GetContainer("TEAMModelOS", "School").ReplaceItemAsync(steacher, id, new PartitionKey($"Teacher-{school_code}"));
|
|
|
}
|
|
|
else
|
|
@@ -583,9 +609,9 @@ namespace TEAMModelOS.Controllers
|
|
|
id = id,
|
|
|
name = name.ToString(),
|
|
|
picture = picture?.ToString(),
|
|
|
- permissions = new List<string>() { "content-read", "exercise-read", "knowledge-read", "syllabus-read" },
|
|
|
+ permissions = grant_type.ToString().Equals("join")? dft : null,
|
|
|
roles = new List<string>() { "teacher" },
|
|
|
- size = 1,
|
|
|
+ size = 0,
|
|
|
status = grant_type.GetString()
|
|
|
};
|
|
|
var response = await client.GetContainer("TEAMModelOS", "School").CreateItemAsync(st, new PartitionKey($"Teacher-{school_code}"));
|