fa485d902b
* Added first centralized database config and added machine self-registration into db * Fix database migration with new database * Refactor
115 lines
3.6 KiB
C#
115 lines
3.6 KiB
C#
using System;
|
|
using System.Data.Entity.Migrations;
|
|
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, CultureInfo language)
|
|
{
|
|
UserModel user = CreateUserModel(username, password, firstName, lastName, 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, CultureInfo language)
|
|
{
|
|
// Create a new user model with params
|
|
return new UserModel()
|
|
{
|
|
UserId = id,
|
|
Username = username,
|
|
Password = Crypto.HashPassword(password),
|
|
FirstName = firstName,
|
|
LastName = lastName,
|
|
SecurityStamp = Guid.NewGuid().ToString(),
|
|
Language = language
|
|
};
|
|
}
|
|
public static UserModel CreateUserModel(string username, string password, string firstName, string lastName, CultureInfo language)
|
|
{
|
|
return CreateUserModel(0, username, password, firstName, lastName, language);
|
|
}
|
|
|
|
public DTOUserModel GetUserInfo(int id)
|
|
{
|
|
// Find user by Id with Role object included
|
|
UserModel userDatabaseModel = dbCtx.Users.Where(u => u.UserId == id).FirstOrDefault();
|
|
|
|
return new DTOUserModel()
|
|
{
|
|
Id = userDatabaseModel.UserId,
|
|
Username = userDatabaseModel.Username,
|
|
FirstName = userDatabaseModel.FirstName,
|
|
LastName = userDatabaseModel.LastName,
|
|
Language = userDatabaseModel.Language,
|
|
};
|
|
}
|
|
|
|
public UserModel FindById(int id)
|
|
{
|
|
// Find user by Id with Role object included
|
|
return dbCtx.Users.Where(u => u.UserId == id).FirstOrDefault();
|
|
}
|
|
|
|
private UserModel FindByUsername(string username)
|
|
{
|
|
// Find user by Id with Role object included
|
|
return dbCtx.Users.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;
|
|
}
|
|
|
|
public void CreateCmsDefaultUserIfNotExists()
|
|
{
|
|
dbCtx.Users.AddOrUpdate
|
|
(
|
|
CreateUserModel(1, "cms", "cms", "cms", "cms", new CultureInfo("en"))
|
|
);
|
|
|
|
dbCtx.MachinesUsers.AddOrUpdate(
|
|
new MachinesUsersModel() { MachineId = 1, UserId = 1, RoleId = 1 }
|
|
);
|
|
|
|
// Commit changes
|
|
dbCtx.SaveChanges();
|
|
}
|
|
}
|
|
}
|