diff options
author | crupest <crupest@outlook.com> | 2020-11-27 01:26:23 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-11-27 01:26:23 +0800 |
commit | 5e4cdbbfa75ce021dfbfd8e1f2d38370a702285e (patch) | |
tree | e0c263bd7a3827c0f6ddbee123362f7f79757a0c /BackEnd/Timeline/Services | |
parent | 7883590a7a0c5c5c4e5cff6290e26c64e1258a25 (diff) | |
download | timeline-5e4cdbbfa75ce021dfbfd8e1f2d38370a702285e.tar.gz timeline-5e4cdbbfa75ce021dfbfd8e1f2d38370a702285e.tar.bz2 timeline-5e4cdbbfa75ce021dfbfd8e1f2d38370a702285e.zip |
...
Diffstat (limited to 'BackEnd/Timeline/Services')
-rw-r--r-- | BackEnd/Timeline/Services/HighlightTimelineService.cs | 6 | ||||
-rw-r--r-- | BackEnd/Timeline/Services/UserPermissionService.cs | 33 | ||||
-rw-r--r-- | BackEnd/Timeline/Services/UserService.cs | 6 |
3 files changed, 37 insertions, 8 deletions
diff --git a/BackEnd/Timeline/Services/HighlightTimelineService.cs b/BackEnd/Timeline/Services/HighlightTimelineService.cs index 619bc33e..0f4e5488 100644 --- a/BackEnd/Timeline/Services/HighlightTimelineService.cs +++ b/BackEnd/Timeline/Services/HighlightTimelineService.cs @@ -46,12 +46,14 @@ namespace Timeline.Services private readonly DatabaseContext _database;
private readonly IBasicUserService _userService;
private readonly ITimelineService _timelineService;
+ private readonly IClock _clock;
- public HighlightTimelineService(DatabaseContext database, IBasicUserService userService, ITimelineService timelineService)
+ public HighlightTimelineService(DatabaseContext database, IBasicUserService userService, ITimelineService timelineService, IClock clock)
{
_database = database;
_userService = userService;
_timelineService = timelineService;
+ _clock = clock;
}
public async Task AddHighlightTimeline(string timelineName, long? operatorId)
@@ -70,7 +72,7 @@ namespace Timeline.Services if (alreadyIs) return;
- _database.HighlightTimelines.Add(new HighlightTimelineEntity { TimelineId = timelineId, OperatorId = operatorId });
+ _database.HighlightTimelines.Add(new HighlightTimelineEntity { TimelineId = timelineId, OperatorId = operatorId, AddTime = _clock.GetCurrentTime() });
await _database.SaveChangesAsync();
}
diff --git a/BackEnd/Timeline/Services/UserPermissionService.cs b/BackEnd/Timeline/Services/UserPermissionService.cs index 9683000a..bd7cd6aa 100644 --- a/BackEnd/Timeline/Services/UserPermissionService.cs +++ b/BackEnd/Timeline/Services/UserPermissionService.cs @@ -28,7 +28,7 @@ namespace Timeline.Services /// <summary>
/// Represents a user's permissions.
/// </summary>
- public class UserPermissions : IEnumerable<UserPermission>
+ public class UserPermissions : IEnumerable<UserPermission>, IEquatable<UserPermissions>
{
public static UserPermissions AllPermissions { get; } = new UserPermissions(Enum.GetValues<UserPermission>());
@@ -49,10 +49,10 @@ namespace Timeline.Services public UserPermissions(IEnumerable<UserPermission> permissions)
{
if (permissions == null) throw new ArgumentNullException(nameof(permissions));
- _permissions = new HashSet<UserPermission>(permissions);
+ _permissions = new SortedSet<UserPermission>(permissions);
}
- private readonly HashSet<UserPermission> _permissions = new();
+ private readonly SortedSet<UserPermission> _permissions = new();
/// <summary>
/// Check if a permission is contained in the list.
@@ -108,6 +108,33 @@ namespace Timeline.Services {
return ((IEnumerable)_permissions).GetEnumerator();
}
+
+ public bool Equals(UserPermissions? other)
+ {
+ if (other == null)
+ return false;
+
+ return _permissions.SequenceEqual(other._permissions);
+ }
+
+ public override bool Equals(object? obj)
+ {
+ return Equals(obj as UserPermissions);
+ }
+
+ public override int GetHashCode()
+ {
+ int result = 0;
+ foreach (var permission in Enum.GetValues<UserPermission>())
+ {
+ if (_permissions.Contains(permission))
+ {
+ result += 1;
+ }
+ result <<= 1;
+ }
+ return result;
+ }
}
public interface IUserPermissionService
diff --git a/BackEnd/Timeline/Services/UserService.cs b/BackEnd/Timeline/Services/UserService.cs index 96068e44..c99e86b0 100644 --- a/BackEnd/Timeline/Services/UserService.cs +++ b/BackEnd/Timeline/Services/UserService.cs @@ -17,7 +17,7 @@ namespace Timeline.Services /// <summary>
/// Null means not change.
/// </summary>
- public record ModifyUserParams
+ public class ModifyUserParams
{
public string? Username { get; set; }
public string? Password { get; set; }
@@ -78,13 +78,13 @@ namespace Timeline.Services private readonly UsernameValidator _usernameValidator = new UsernameValidator();
private readonly NicknameValidator _nicknameValidator = new NicknameValidator();
- public UserService(ILogger<UserService> logger, DatabaseContext databaseContext, IPasswordService passwordService, IClock clock, IUserPermissionService userPermissionService) : base(databaseContext)
+ public UserService(ILogger<UserService> logger, DatabaseContext databaseContext, IPasswordService passwordService, IUserPermissionService userPermissionService, IClock clock) : base(databaseContext)
{
_logger = logger;
- _clock = clock;
_databaseContext = databaseContext;
_passwordService = passwordService;
_userPermissionService = userPermissionService;
+ _clock = clock;
}
private void CheckUsernameFormat(string username, string? paramName)
|