53223b0bef
+ Added change language API + Added Role to user info
141 lines
4.5 KiB
C#
141 lines
4.5 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;
|
|
using static Step.Config.ServerConfig;
|
|
|
|
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 userId)
|
|
{
|
|
// Find user by Id with Role object included
|
|
UserModel userDatabaseModel = dbCtx.Users.Where(u => u.UserId == userId).FirstOrDefault();
|
|
DTORoleModel roleModel = null;
|
|
|
|
using (MachinesUsersController machinesUsersControler = new MachinesUsersController())
|
|
{
|
|
roleModel = machinesUsersControler.GetUserRole(MachineConfig.MachineId, userId);
|
|
}
|
|
|
|
return new DTOUserModel()
|
|
{
|
|
Id = userDatabaseModel.UserId,
|
|
Username = userDatabaseModel.Username,
|
|
FirstName = userDatabaseModel.FirstName,
|
|
LastName = userDatabaseModel.LastName,
|
|
Language = userDatabaseModel.Language,
|
|
Role = roleModel
|
|
};
|
|
}
|
|
|
|
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(int machineId)
|
|
{
|
|
UserModel user = FindByUsername("cms");
|
|
if (user == null)
|
|
{
|
|
user = dbCtx.Users.Add(
|
|
CreateUserModel("cms", "cms", "cms", "cms", new CultureInfo("en"))
|
|
);
|
|
|
|
// Commit changes
|
|
dbCtx.SaveChanges();
|
|
}
|
|
|
|
using (MachinesUsersController machineUserController = new MachinesUsersController())
|
|
{
|
|
MachinesUsersModel machineUser = machineUserController.FindByUserId(machineId, user.UserId);
|
|
|
|
if (machineUser == null)
|
|
machineUserController.Create(machineId, user.UserId, 1);
|
|
}
|
|
}
|
|
|
|
public void ChangeUserLanguage(int userId, CultureInfo newLanguage)
|
|
{
|
|
UserModel user = FindById(userId);
|
|
|
|
if(user != null)
|
|
{
|
|
user.Language = newLanguage;
|
|
dbCtx.SaveChanges();
|
|
}
|
|
}
|
|
}
|
|
}
|