Update backend to support SodistoreMax sessions

This commit is contained in:
Noe 2025-04-29 16:04:39 +02:00
parent cf9c96377f
commit 2cb15d6478
5 changed files with 40 additions and 4 deletions

View File

@ -143,7 +143,9 @@ public static class ExoCmd
{
const String url = "https://api-ch-dk-2.exoscale.com/v2/iam-role";
const String method = "iam-role";
String rolename = installation.Product==(int)ProductType.Salimax?Db.Installations.Count(f => f.Product == (int)ProductType.Salimax) + installation.Name:Db.Installations.Count(f => f.Product == (int)ProductType.Salidomo) + installation.Name;
String rolename = installation.Product==(int)ProductType.Salimax?Db.Installations.Count(f => f.Product == (int)ProductType.Salimax) + installation.Name:
installation.Product==(int)ProductType.SodiStoreMax?Db.Installations.Count(f => f.Product == (int)ProductType.SodiStoreMax) + installation.Name:
Db.Installations.Count(f => f.Product == (int)ProductType.Salidomo) + installation.Name;
var contentString = $$"""
@ -316,7 +318,9 @@ public static class ExoCmd
{
const String url = "https://api-ch-dk-2.exoscale.com/v2/iam-role";
const String method = "iam-role";
String rolename = installation.Product==(int)ProductType.Salimax?Db.Installations.Count(f => f.Product == (int)ProductType.Salimax) + installation.Name:Db.Installations.Count(f => f.Product == (int)ProductType.Salidomo) + installation.Name;
String rolename = installation.Product==(int)ProductType.Salimax?Db.Installations.Count(f => f.Product == (int)ProductType.Salimax) + installation.Name:
installation.Product==(int)ProductType.SodiStoreMax?Db.Installations.Count(f => f.Product == (int)ProductType.SodiStoreMax) + installation.Name:
Db.Installations.Count(f => f.Product == (int)ProductType.Salidomo) + installation.Name;
var contentString = $$"""
{

View File

@ -16,7 +16,7 @@ public static class InstallationMethods
public static String BucketName(this Installation installation)
{
if (installation.Product == (int)ProductType.Salimax)
if (installation.Product == (int)ProductType.Salimax || installation.Product == (int)ProductType.SodiStoreMax)
{
return $"{installation.S3BucketId}-{BucketNameSalt}";
}

View File

@ -223,6 +223,18 @@ public static class SessionMethods
}
if (installation.Product == (int)ProductType.SodiStoreMax)
{
return user is not null
&& user.UserType != 0
&& user.HasAccessToParentOf(installation)
&& Db.Create(installation) // TODO: these two in a transaction
&& Db.Create(new InstallationAccess { UserId = user.Id, InstallationId = installation.Id })
&& await installation.CreateBucket()
&& await installation.RenewS3Credentials();
}
if (installation.Product == (int)ProductType.Salidomo)
{
return user is not null
@ -266,6 +278,19 @@ public static class SessionMethods
.WithParentOf(original) // prevent moving
.Apply(Db.Update);
}
if (installation.Product == (int)ProductType.SodiStoreMax)
{
return user is not null
&& installation is not null
&& original is not null
&& user.UserType !=0
&& user.HasAccessTo(installation)
&& installation
.WithParentOf(original) // prevent moving
.Apply(Db.Update);
}
return user is not null
@ -287,7 +312,7 @@ public static class SessionMethods
&& installation is not null
&& user.UserType != 0)
{
if (installation.Product is (int)ProductType.Salimax or (int)ProductType.Salidomo)
if (installation.Product is (int)ProductType.Salimax or (int)ProductType.Salidomo || installation.Product == (int)ProductType.SodiStoreMax)
{
return
Db.Delete(installation)

View File

@ -14,6 +14,7 @@ public class Session : Relation<String, Int64>
[Indexed] public DateTime LastSeen { get; set; }
public Boolean AccessToSalimax { get; set; } = false;
public Boolean AccessToSalidomo { get; set; } = false;
public Boolean AccessToSodistoreMax { get; set; } = false;
public Boolean AccessToSodioHome { get; set; } = false;
[Ignore] public Boolean Valid => DateTime.Now - LastSeen <=MaxAge ;
@ -46,6 +47,7 @@ public class Session : Relation<String, Int64>
LastSeen = DateTime.Now;
AccessToSalimax = user.AccessibleInstallations(product: (int)ProductType.Salimax).ToList().Count > 0;
AccessToSalidomo = user.AccessibleInstallations(product: (int)ProductType.Salidomo).ToList().Count > 0;
AccessToSodistoreMax = user.AccessibleInstallations(product: (int)ProductType.SodiStoreMax).ToList().Count > 0;
AccessToSodioHome = user.AccessibleInstallations(product: (int)ProductType.SodioHome).ToList().Count > 0;
}

View File

@ -95,6 +95,11 @@ public static class RabbitMqManager
monitorLink =
$"https://monitor.innov.energy/installations/list/installation/{installation.S3BucketId}/batteryview";
}
else if (installation.Product == (int)ProductType.SodiStoreMax)
{
monitorLink =
$"https://monitor.innov.energy/sodistore_installations/list/installation/{installation.S3BucketId}/batteryview";
}
else
{
monitorLink =