示例#1
0
        public async Task <bool> userSave(TabUser user)
        {
            _bookcaseContext.TabUser.Add(user);
            await _bookcaseContext.SaveChangesAsync();

            return(true);
        }
示例#2
0
        public async Task <bool> userUpdate(TabUser user)
        {
            _bookcaseContext.Entry(user).State = EntityState.Modified;
            await _bookcaseContext.SaveChangesAsync();

            return(true);
        }
        public async Task <ActionResult <TabUser> > AuthenticateUserAsync([FromBody] UserCreateDto userParam)
        {
            // Query verwenden, um User zu authentifizieren
            //TabUser user = await _context.AuthenticateAsync(userParam.Username, userParam.Passwort);

            //entsprechenden User aus der DB holen.
            TabUser userDB = await
                             _context.TabUser.SingleOrDefaultAsync(x => x.Username == userParam.Username &&
                                                                   x.Passwort == userParam.Passwort);

            var User = _mapper.Map <TabUser>(userParam);

            //falls ein User gefunden wurde, Passwort schwärzen bzw. unkenntlich machen.
            if (User != null)
            {
                User.Passwort = null;
            }


            //wenn die Query keinen entsprechenden User zurückgibt, gibt es keinen mit dem entsprechenden
            //Username und PW.
            if (User == null)
            {
                return(BadRequest("Username oder Passwort ist falsch."));
            }

            //Von der Query erhaltenen User zurückgeben.
            return(Ok(User));
        }
示例#4
0
        public async Task <ActionResult> Post([FromBody] TabUser user)
        {
            var saved = await _userService.userSave(user);

            if (!saved)
            {
                return(BadRequest("Email or username is being used."));
            }

            return(Ok(saved));
        }
示例#5
0
        public async Task <bool> userUpdate(TabUser user)
        {
            var oldUser = await _userRepository.userTakeById(user.UserId);

            if (oldUser == null)
            {
                return(false);
            }

            user.UserPassword = oldUser.UserPassword;
            return(await _userRepository.userUpdate(user));
        }
示例#6
0
        public static async Task <TabUser> GetUserAsync(this IDataContext context, int id)
        {
            //entsprechenden User aus der DB holen
            TabUser user = await context.TabUser.SingleOrDefaultAsync(x =>
                                                                      x.Id == id);

            //falls ein User gefunden wurde, Passwort schwärzen bzw. unkenntlich machen
            if (user != null)
            {
                user.Passwort = null;
            }

            //User zurückgeben
            return(user);
        }
示例#7
0
        public static async Task <TabUser> AuthenticateAsync(this IDataContext context, string username, string passwort)
        {
            //entsprechenden User aus der DB holen
            TabUser user = await
                           context.TabUser.SingleOrDefaultAsync(x => x.Username == username &&
                                                                x.Passwort == passwort);

            //falls ein User gefunden wurde, Passwort schwärzen bzw. unkenntlich machen
            if (user != null)
            {
                user.Passwort = null;
            }
            //User zurückgeben
            return(user);
        }
示例#8
0
        public async Task <bool> userSave(TabUser user)
        {
            var userByUsername = await _userRepository.userTakeByUsername(user.UserName);

            if (userByUsername != null)
            {
                return(false);
            }

            var userByEmail = await _userRepository.userTakeByEmail(user.UserEmail);

            if (userByEmail != null)
            {
                return(false);
            }

            return(await _userRepository.userSave(user));
        }
示例#9
0
        public static async Task <bool> DeleteUserAsync(this IDataContext context, int id)
        {
            //entsprechenden User aus der DB holen
            TabUser userDB = await context.TabUser.SingleOrDefaultAsync(x =>
                                                                        x.Id == id);

            //falls ein User gefunden wurde, diesen Löschen
            if (userDB != null)
            {
                context.TabUser.Remove(userDB);
                //await context.SaveChangesAsynchron();

                return(true);
            }

            //es gibt keinen entsprechenden User
            return(false);
        }
        public async Task <ActionResult <UserReadDto> > GetUserAsync(int id)
        {
            //Claims in der erzeugten Identity können hier verwendet werden
            //-> User können nur ihre eigenen Daten abrufen
            if (id != Convert.ToInt16(User.FindFirst(ClaimTypes.NameIdentifier).Value) &&
                !User.IsInRole(Role.ADMIN)) // Admins können jeden User abrufen
            {
                return(Forbid());
            }

            TabUser user = await _context.GetUserAsync(id);

            if (user == null)
            {
                return(NotFound("Der User existiert nicht."));
            }

            return(Ok(_mapper.Map <UserReadDto>(user)));
        }
示例#11
0
        public async Task <ActionResult> AuthUser([FromBody] AuthUser authUser)
        {
            TabUser user = await _userService.authUser(authUser);

            if (user == null)
            {
                return(BadRequest("Senha ou email inválidos!"));
            }

            var claims = new[]
            {
                new Claim("id", user.UserId.ToString()),
                new Claim("userName", user.UserName),
                new Claim("fullName", user.UserFullName),
                new Claim("email", user.UserEmail)
            };

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["SecurityKey"]));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var token = new JwtSecurityToken(
                issuer: "Code Cave Web Solution",
                audience: user.UserEmail,
                claims: claims,
                expires: DateTime.Now.AddMinutes(1),
                signingCredentials: creds
                );

            Response.Headers.Add("x-access-token", new JwtSecurityTokenHandler().WriteToken(token));


            return(Ok());
            //return Ok(new
            //{
            //    token = new JwtSecurityTokenHandler().WriteToken(token)
            //});
        }
        public async Task <ActionResult <TabUser> > UpdateUserAsync(int id, [FromBody] UserUpdateDto userParam)
        {
            if (userParam == null || id != userParam.Id)
            {
                return(BadRequest("Irgendetwas ist schief gelaufen! Geben Sie die Parameter erneut ein."));
            }

            //Claims in der erzeugten Identity können hier verwendet werden
            //-> User können nur ihre eigenen Daten abrufen
            if (id != Convert.ToInt16(User.FindFirst(ClaimTypes.NameIdentifier).Value) &&
                !User.IsInRole(Role.ADMIN)) // Admins können jeden User ändern
            {
                return(Forbid("Das ist Ihnen nicht erlaubt!"));
            }

            //TabUser user = await _context.UpdateUserdataAsync(userParam);



            //entsprechenden User aus der DB holen.
            TabUser userDB = await _context.TabUser.SingleOrDefaultAsync(u =>
                                                                         u.Id == userParam.Id);

            //falls ein User gefunden wurde, dessen Daten aktualisieren.
            if (userDB != null)
            {
                //prüfen, ob der Username geändert wurde.
                if (userDB.Username != userParam.Username)
                {
                    //prüfen, ob der neue Username noch frei ist.
                    bool usernameVorhanden = await _context.TabUser.AnyAsync(x =>
                                                                             x.Username == userParam.Username);

                    if (usernameVorhanden)
                    {
                        return(null);
                    }
                    //neuen Usernamen übernehmen
                    userDB.Username = userParam.Username;
                }

                //prüfen, ob die Rolle geändert wurde
                if (userDB.Role != userParam.Role)
                {
                    //falls keine gültige Rolle angegeben wurde,
                    //bekommt der neue User die Rolle "user"
                    string userParamRole = userParam.Role.Trim().ToLower();
                    if (!Role.IsValid(userParam.Role))
                    {
                        userParam.Role = Role.USER;
                    }
                }

                _mapper.Map(userParam, userDB);

                //Daten werden aktualisiert
                userDB.Vorname    = userParam.Vorname;
                userDB.Nachname   = userParam.Nachname;
                userDB.Id         = userParam.Id;
                userDB.Passwort   = userParam.Passwort;
                userDB.Username   = userParam.Username;
                userDB.Vegetarier = userParam.Vegetarier;
                userDB.Veganer    = userParam.Veganer;
                userDB.Glutenfrei = userParam.Glutenfrei;

                await _context.SaveChangesAsynchron();

                return(NoContent());
            }

            return(NotFound("Der User existiert nicht!"));
        }