Archived
Private
Public Access
1
0

Initial commit

This commit is contained in:
2022-09-04 12:03:44 +02:00
commit 15f48d259f
91 changed files with 22716 additions and 0 deletions

View File

@@ -0,0 +1,68 @@
using Backend.Entitys;
using Backend.Options;
using Microsoft.Extensions.Options;
namespace Backend.Repositorys;
public class UserRepository {
private DatabaseContext _context;
private TokenRepository _tokens;
private GroupRepository _groups;
private UserOptions _options;
public UserRepository(DatabaseContext context, TokenRepository tokens, GroupRepository groups, IOptions<UserOptions> options) {
_context = context;
_tokens = tokens;
_groups = groups;
_options = options.Value;
}
public IEnumerable<User> GetUsers() => _context.Users.OrderBy(user => user.Created);
public User GetUser(Guid userId) => _context.Users.SingleOrDefault(user => user.Id == userId);
public User CreateUser(UserEditor editor) {
var user = new User {
Id = Guid.NewGuid(),
Created = DateTime.Now,
Email = editor.Email,
FirstName = editor.FirstName,
LastName = editor.LastName,
Password = TokenRepository.Hash128(editor.Password, editor.Email),
Username = editor.Username
};
_context.Users.Add(user);
_context.SaveChanges();
_groups.AddPermissions(user.Id, _options.DefaultPermissions);
return user;
}
public void EditUser(Guid userId, UserEditor editor) {
var user = GetUser(userId);
string SetValue(string orig, string input, string hashed = null) {
if (!string.IsNullOrEmpty(input))
return !string.IsNullOrEmpty(hashed) ? hashed : input;
return orig;
}
user.Email = SetValue(user.Email, editor.Email);
user.FirstName = SetValue(user.FirstName, editor.FirstName);
user.LastName = SetValue(user.LastName, editor.LastName);
user.Username = SetValue(user.Username, editor.Username);
user.Password = SetValue(user.Password, editor.Password, TokenRepository.Hash128(editor.Password, editor.Email));
_context.SaveChanges();
}
public void DeleteUser(Guid userId) {
_context.Users.Remove(_context.Users.Single(user => user.Id == userId));
_context.Permissions.RemoveRange(_context.Permissions.Where(perm => perm.UserId == userId));
_tokens.DeleteUserTokens(userId);
_context.SaveChanges();
}
}