f0a48aa8d5
+ Added new nc error management
101 lines
3.3 KiB
C#
101 lines
3.3 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Web.Helpers;
|
|
using Step.Model.DatabaseModels;
|
|
using Step.Model.DTOModels;
|
|
|
|
namespace Step.Database.Controllers
|
|
{
|
|
public class UsersController : IDisposable
|
|
{
|
|
private DatabaseContext dbCtx;
|
|
|
|
public UsersController()
|
|
{
|
|
// Initialize database context
|
|
dbCtx = new DatabaseContext();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
// Clear database context
|
|
dbCtx.Dispose();
|
|
}
|
|
|
|
public void Create(string username, string password, string firstName, string lastName, int roleId, CultureInfo language)
|
|
{
|
|
UserModel user = CreateUserModel(username, password, firstName, lastName, roleId, language);
|
|
// Add to database
|
|
dbCtx.Users.Add(user);
|
|
// Commit changes
|
|
dbCtx.SaveChanges();
|
|
}
|
|
|
|
public static UserModel CreateUserModel(int id, string username, string password, string firstName, string lastName, int roleId, CultureInfo language)
|
|
{
|
|
// Create a new user model with params
|
|
return new UserModel()
|
|
{
|
|
UserId = id,
|
|
Username = username,
|
|
Password = Crypto.HashPassword(password),
|
|
FirstName = firstName,
|
|
LastName = lastName,
|
|
RoleId = roleId,
|
|
SecurityStamp = Guid.NewGuid().ToString(),
|
|
Language = language
|
|
};
|
|
}
|
|
public static UserModel CreateUserModel(string username, string password, string firstName, string lastName, int roleId, CultureInfo language)
|
|
{
|
|
return CreateUserModel(0, username, password, firstName, lastName, roleId, language);
|
|
}
|
|
|
|
public DTOUserModel GetUserInfo(int id)
|
|
{
|
|
// Find user by Id with Role object included
|
|
UserModel userDatabaseModel = dbCtx.Users.Include("Role").Where(u => u.UserId == id).FirstOrDefault();
|
|
|
|
return new DTOUserModel()
|
|
{
|
|
Id = userDatabaseModel.UserId,
|
|
Username = userDatabaseModel.Username,
|
|
FirstName = userDatabaseModel.FirstName,
|
|
LastName = userDatabaseModel.LastName,
|
|
Language = userDatabaseModel.Language,
|
|
RoleId = userDatabaseModel.RoleId
|
|
};
|
|
}
|
|
|
|
public UserModel FindById(int id)
|
|
{
|
|
// Find user by Id with Role object included
|
|
return dbCtx.Users.Include("Role").Where(u => u.UserId == id).FirstOrDefault();
|
|
}
|
|
|
|
private UserModel FindByUsername(string username)
|
|
{
|
|
// Find user by Id with Role object included
|
|
return dbCtx.Users.Include("Role").Where(u => u.Username == username).FirstOrDefault();
|
|
}
|
|
|
|
public UserModel FindByUsernameAndPassword(string username, string password)
|
|
{
|
|
// Find if username exists
|
|
UserModel user = FindByUsername(username);
|
|
|
|
if (user != null)
|
|
{
|
|
// Check if the passwords match
|
|
if (Crypto.VerifyHashedPassword(user.Password, password) != true)
|
|
{
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return user;
|
|
}
|
|
}
|
|
}
|