.github
.idx
DysonNetwork.Sphere
Account
Activity
Auth
Chat
Connection
Developer
Email
Localization
Migrations
Pages
Permission
Post
Properties
Publisher
Realm
Realm.cs
RealmChatController.cs
RealmController.cs
RealmService.cs
Resources
Sticker
Storage
Wallet
wwwroot
.DS_Store
.gitignore
AppDatabase.cs
Dockerfile
DysonNetwork.Sphere.csproj
DysonNetwork.Sphere.csproj.DotSettings.user
DysonNetwork.Sphere.http
Program.cs
appsettings.json
package.json
postcss.config.js
tailwind.config.js
.dockerignore
.gitignore
DysonNetwork.sln
DysonNetwork.sln.DotSettings.user
compose.yaml
32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
using DysonNetwork.Sphere.Account;
|
|
using DysonNetwork.Sphere.Localization;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Localization;
|
|
|
|
namespace DysonNetwork.Sphere.Realm;
|
|
|
|
public class RealmService(AppDatabase db, NotificationService nty, IStringLocalizer<NotificationResource> localizer)
|
|
{
|
|
public async Task SendInviteNotify(RealmMember member)
|
|
{
|
|
AccountService.SetCultureInfo(member.Account);
|
|
await nty.SendNotification(
|
|
member.Account,
|
|
"invites.realms",
|
|
localizer["RealmInviteTitle"],
|
|
null,
|
|
localizer["RealmInviteBody", member.Realm.Name]
|
|
);
|
|
}
|
|
|
|
public async Task<bool> IsMemberWithRole(Guid realmId, Guid accountId, params RealmMemberRole[] requiredRoles)
|
|
{
|
|
if (requiredRoles.Length == 0)
|
|
return false;
|
|
|
|
var maxRequiredRole = requiredRoles.Max();
|
|
var member = await db.RealmMembers
|
|
.FirstOrDefaultAsync(m => m.RealmId == realmId && m.AccountId == accountId);
|
|
return member?.Role >= maxRequiredRole;
|
|
}
|
|
} |