Ejemplo n.º 1
0
        public async Task <IActionResult> Create([FromBody] AddUserResource userResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = mapper.Map <Core.Models.User>(userResource);

            // Add user
            userRepository.Add(user, userResource.Password);

            // Copy all right to module right
            var rightLists = await moduleRightsRepository.GetAll();

            foreach (ModuleRight list in rightLists)
            {
                var userModuleRights = new UserModuleRight
                {
                    ModuleRightsId = list.Id,
                    UserId         = user.Id,
                    Read           = false,
                    Write          = false
                };

                var saveUserModule = mapper.Map <UserModuleRight>(userModuleRights);

                userModuleRightsRepository.Add(saveUserModule);
            }

            if (await unitOfWork.CompleteAsync() == false)
            {
                throw new Exception(message: "Create new user fail on save");
            }

            user = await userRepository.GetOne(user.Id);

            var result = mapper.Map <Core.Models.User, ViewUserResource>(user);

            return(Ok(result));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create([FromBody] SaveModuleRightsResource moduleResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var module = mapper.Map <SaveModuleRightsResource, ModuleRight>(moduleResource);

            // Add module right
            moduleRepository.Add(module);

            // Add module right to user module right
            var users = await userRepository.GetAll();

            foreach (User list in users)
            {
                var userModuleRights = new UserModuleRight
                {
                    ModuleRightsId = module.Id,
                    UserId         = list.Id,
                    Read           = false,
                    Write          = false
                };

                var saveUserModule = mapper.Map <UserModuleRight>(userModuleRights);

                userModuleRightsRepository.Add(saveUserModule);
            }

            if (await unitOfWork.CompleteAsync() == false)
            {
                throw new Exception(message: "Create new Module failed on save");
            }

            module = await moduleRepository.GetOne(module.Id);

            var result = mapper.Map <ModuleRight, ViewModuleRightsResource>(module);

            return(Ok(result));
        }
Ejemplo n.º 3
0
 public void Remove(UserModuleRight userModuleRights)
 {
     context.Remove(userModuleRights);
 }
Ejemplo n.º 4
0
 public void Add(UserModuleRight userModuleRights)
 {
     context.UserModuleRight.Add(userModuleRights);
 }
Ejemplo n.º 5
0
        public async Task <IActionResult> Login([FromBody] LoginResource loginResource)
        {
            // if (EncryptionHelper.DecryptGetValidDate(licensekey) == false)
            // {
            //     return BadRequest("Trial Version is Expired");
            // }

            var username = loginResource.Username;
            var password = loginResource.Password;

            var anyUser = await userRepository.GetAll();

            var userLogin = await userRepository.GetOneByUserName(username);

            if (shouldLoginAD)
            {
                try
                {
                    var          de     = new DirectoryEntry("LDAP://" + domainName, username, password);
                    var          ds     = new DirectorySearcher(de);
                    SearchResult search = ds.FindOne();

                    if (search != null)
                    {
                        if (userLogin == null)
                        {
                            createNewuser = true;
                        }
                    }
                    else
                    {
                        return(Unauthorized());
                    }
                }
                catch
                {
                    return(BadRequest("AD Login Problem"));
                }

                if (createNewuser)
                {
                    // new user here
                    userLogin = new User()
                    {
                        Username    = username,
                        GddbId      = username,
                        AdminStatus = anyUser.Count() <= 0 ? true : false,
                        isActive    = true
                    };
                    password = "";
                    userRepository.Add(userLogin, password);

                    // Copy all right to module right
                    var rightLists = await moduleRightsRepository.GetAll();

                    foreach (ModuleRight list in rightLists)
                    {
                        var userModuleRights = new UserModuleRight
                        {
                            ModuleRightsId = list.Id,
                            UserId         = userLogin.Id,
                            Read           = false,
                            Write          = false
                        };

                        var saveUserModule = mapper.Map <UserModuleRight>(userModuleRights);

                        userModuleRightsRepository.Add(saveUserModule);
                    }

                    if (await unitOfWork.CompleteAsync() == false)
                    {
                        throw new Exception(message: "Save new user Failed");
                    }
                }
            }
            else
            {
                userLogin = await userRepository.Login(username, password);
            }

            if (userLogin == null)
            {
                return(Unauthorized());
            }

            var allUserModules = await userModuleRepository.GetAll();

            var userModules = allUserModules.Where(u => u.UserId == userLogin.Id).ToList();

            // Add user claim
            var claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.Name, userLogin.Username));
            claims.Add(new Claim("Id", userLogin.Id.ToString()));

            if (userLogin.AdminStatus == true)
            {
                claims.Add(new Claim(ClaimTypes.Role, "Administrator"));
            }

            foreach (UserModuleRight userModule in userModules)
            {
                var right = await moduleRightsRepository.GetOne(userModule.ModuleRightsId);

                var claim = right.Description.ToString();

                if (userModule.Read == true)
                {
                    claims.Add(new Claim(ClaimTypes.Role, $"{claim}.R"));
                }

                if (userModule.Write == true)
                {
                    claims.Add(new Claim(ClaimTypes.Role, $"{claim}.W"));
                }
            }

            var key = new SymmetricSecurityKey(Encoding.UTF8
                                               .GetBytes(this.config.GetSection("AppSettings:Token").Value));

            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();

            var token = tokenHandler.CreateToken(tokenDescriptor);

            var user = mapper.Map <ViewUserResource>(userLogin);

            return(Ok(new
            {
                token = tokenHandler.WriteToken(token),
                user
            }));
        }