示例#1
0
        public async Task <AppUserDTO> Register(AppUserRegisterDTO appUserRegisterDTO)
        {
            var appUserDTO = new AppUserDTO();

            if (await _context.Users.Where(x => x.Email == appUserRegisterDTO.Email).AnyAsync())
            {
                appUserDTO.Message.Add("Email already in system");
            }

            if (await _context.Users.Where(x => x.UserName == appUserRegisterDTO.UserName).AnyAsync())
            {
                appUserDTO.Message.Add("User Name already in system");
            }

            var newUser = new AppUser
            {
                DisplayName = appUserRegisterDTO.UserName,
                Email       = appUserRegisterDTO.Email,
                UserName    = appUserRegisterDTO.UserName
            };

            var newUserResult = await _userManager.CreateAsync(newUser, appUserRegisterDTO.Password);

            if (newUserResult.Succeeded)
            {
                appUserDTO.DisplayName = newUser.DisplayName;
                appUserDTO.Token       = _jwtGenerator.CreateToken(newUser);
                appUserDTO.UserName    = newUser.UserName;
                appUserDTO.Image       = null;
            }
            else
            {
                foreach (var Error in newUserResult.Errors)
                {
                    appUserDTO.Message.Add(Error.Description);
                }
            }
            return(appUserDTO);
        }
示例#2
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUserName());

                return(new User
                {
                    DisplayName = user.DisplayName,
                    UserName = user.UserName,
                    ModalityId = user.ModalityId,
                    RefreshToken = user.RefreshToken,
                    Token = _jwtGenerator.CreateToken(user)
                });
            }
            public async Task <UsuarioDto> Handle(UsuarioActualCommand request, CancellationToken cancellationToken)
            {
                var usuario = await _userManager.FindByNameAsync(_usuarioSesion.GetUsuarioSesion());

                if (usuario != null)
                {
                    var usuarioDTO = _mapper.Map <Usuario, UsuarioDto>(usuario);
                    usuarioDTO.Token = _jwtGenerator.CreateToken(usuario);
                    return(usuarioDTO);
                }

                throw new Exception("No se encontro el usuario");
            }
            public async Task <User> Handle(Query request,
                                            CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                return(new User
                {
                    DisplayName = user.DisplayName,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                    Image = null
                });
            }
示例#5
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                // handler logic goes here
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUserName());

                return(new User
                {
                    DisplayName = user.DisplayName,
                    UserName = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                    Image = user.Photos.FirstOrDefault(x => x.IsMain)?.Url
                });
            }
示例#6
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                //my code goes here
                var user = await _userManager
                           .FindByNameAsync(_userAccessor.GetCurrentUserName());

                return(new User
                {
                    FullName = user.FirstName + " " + user.LastName,
                    UserName = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                });
            }
示例#7
0
            public async Task <User> Handle(Query request,
                                            CancellationToken cancellationToken)
            {
                var userInfo = await _facebookAccessor
                               .FacebookLogin(request.AccessToken);

                if (userInfo == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest,
                                            new { User = "******" });
                }

                var user = await _userManager.FindByEmailAsync(
                    userInfo.Email);

                if (user == null)
                {
                    user = new AppUser
                    {
                        DisplayName = userInfo.Name,
                        Id          = userInfo.Id,
                        Email       = userInfo.Email,
                        UserName    = "******" + userInfo.Id
                    };

                    var photo = new Photo
                    {
                        Id     = "fb_" + userInfo.Id,
                        Url    = userInfo.Picture.Data.Url,
                        IsMain = true
                    };

                    user.Photos.Add(photo);

                    var result = await _userManager.CreateAsync(user);

                    if (!result.Succeeded)
                    {
                        throw new RestException(HttpStatusCode.BadRequest,
                                                new { User = "******" });
                    }
                }

                return(new User
                {
                    DisplayName = user.DisplayName,
                    Token = _jwtGenerator.CreateToken(user),
                    Username = user.UserName,
                    Image = user.Photos.FirstOrDefault(x => x.IsMain)?.Url
                });
            }
示例#8
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                // get user info and verify token is valid
                var userInfo = await _facebookAccessor.FacebookLogin(request.AccessToken);

                // if user info is null then token could not be validated
                if (userInfo == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { User = "******" });
                }

                var user = await _userManager.FindByEmailAsync(userInfo.Email);

                if (user == null)
                {
                    user = new AppUser
                    {
                        DisplayName        = userInfo.FirstName,
                        Id                 = userInfo.Id,
                        Email              = userInfo.Email,
                        UserName           = "******" + userInfo.Id,
                        RefreshToken       = _jwtGenerator.GenerateRefreshToken(),
                        RefreshTokenExpiry = DateTime.Now.AddDays(30)
                    };

                    var photo = new Photo
                    {
                        Id     = Guid.NewGuid().ToString(),
                        Url    = userInfo.Picture.Data.Url,
                        IsMain = true
                    };

                    user.Photos.Add(photo);

                    var result = await _userManager.CreateAsync(user);

                    if (!result.Succeeded)
                    {
                        throw new RestException(HttpStatusCode.BadRequest, new { User = "******" });
                    }
                }

                return(new User
                {
                    DisplayName = user.DisplayName,
                    Token = _jwtGenerator.CreateToken(user),
                    RefreshToken = user.RefreshToken,
                    Username = user.UserName,
                    Image = user.Photos.FirstOrDefault(x => x.IsMain)?.Url
                });
            }
示例#9
0
            public async Task <User> Handle(Command request, CancellationToken cancellationToken)
            {
                var countVal = _context.Users.Count();
                var rank     = AppUserRank.None;

                if (countVal == 0)
                {
                    rank = AppUserRank.Admin;
                }
                else
                {
                    if (await _context.Users.Where(x => x.Email == request.Email).AnyAsync())
                    {
                        throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email already exists!" });
                    }

                    if (await _context.Users.Where(x => x.UserName == request.Username).AnyAsync())
                    {
                        throw new RestException(HttpStatusCode.BadRequest, new { Username = "******" });
                    }
                }

                var user = new AppUser
                {
                    DisplayName = request.DisplayName,
                    Email       = request.Email,
                    UserName    = request.Username,
                    Rank        = rank
                };

                try {
                    var result = await _userManager.CreateAsync(user, request.Password);

                    if (result.Succeeded)
                    {
                        return(new User
                        {
                            Id = user.Id,
                            DisplayName = user.DisplayName,
                            Token = _jwtGenerator.CreateToken(user),
                            Username = user.UserName,
                            Rank = user.Rank
                        });
                    }
                } catch (Exception e) {
                    Console.WriteLine("User creation error: ", e);
                    throw new RestException(HttpStatusCode.NotFound, new { User = "******" });
                }

                throw new RestException(HttpStatusCode.NotFound, new { User = "******" });
            }
示例#10
0
            public async Task <User> Handle(Command request, CancellationToken cancellationToken)
            {
                var normalizedEmail    = request.Email.ToUpper();
                var normalizedUsername = request.Username.ToUpper();

                if (await _context.Users.AnyAsync(u => u.NormalizedEmail == normalizedEmail))
                {
                    throw new RestException(HttpStatusCode.BadRequest, ErrorType.DuplicateEmailFound);
                }

                if (await _context.Users.AnyAsync(u => u.NormalizedUserName == normalizedUsername))
                {
                    throw new RestException(HttpStatusCode.BadRequest, ErrorType.DuplicateUsernameFound);
                }

                var user = new AppUser
                {
                    DisplayName = request.DisplayName,
                    Email       = request.Email,
                    UserName    = request.Username,

                    RefreshToken       = _jwtGenerator.GenerateRefreshToken(),
                    RefreshTokenExpiry = DateTime.Now.AddDays(30),

                    NotificationsEmail = request.Email,
                };

                var result = await _userManager.CreateAsync(user, request.Password);

                if (result.Succeeded)
                {
                    return(new User
                    {
                        DisplayName = user.DisplayName,
                        Email = user.Email,
                        Username = user.UserName,

                        Token = _jwtGenerator.CreateToken(user),
                        RefreshToken = user.RefreshToken,

                        NotificationsEmail = user.NotificationsEmail,
                        NotifyAboutCertificateChange = user.NotifyAboutCertificateChange,
                        ExpiryNotificationThreshold = user.ExpiryNotificationThresholdDays,
                        NotifyAboutExpiryIfRenewalConfigured = user.NotifyAboutExpiryIfRenewalConfigured,
                        RenewalThresholdDays = user.RenewalThresholdDays
                    });
                }

                throw new RestException(HttpStatusCode.InternalServerError, ErrorType.SavingChangesError);
            }
示例#11
0
            public async Task <UserModel> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                IList <string> role = await _userManager.GetRolesAsync(user);

                return(new UserModel
                {
                    Mail = user.Email,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                    Role = role[0],
                });
            }
示例#12
0
        public async Task <UserDTO> Login(UserLoginDTO userLoginDTO)
        {
            var user = await _userManager.FindByEmailAsync(userLoginDTO.Email);

            if (user == null)
            {
                return(null);
            }

            var userResult = await _signInManager.CheckPasswordSignInAsync(user, userLoginDTO.Password, false);

            if (userResult.Succeeded)
            {
                return(new UserDTO
                {
                    DisplayName = user.DisplayName,
                    Token = _jwtGenerator.CreateToken(user),
                    UserName = user.UserName
                });
            }

            return(null);
        }
            public async Task <UserDto> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                var image = await _context.Photos.FirstOrDefaultAsync(p => p.AppUserId == user.Id && p.IsMain);

                return(new UserDto
                {
                    DisplayName = user.DisplayName,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                    Image = image?.Url
                });
            }
示例#14
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                return(new User
                {
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    Username = user.UserName,
                    // Not necessary, but is used to give the user a new token without the need to log in if they have closed and reopened their browser
                    Token = _jwtGenerator.CreateToken(user),
                    Image = null
                });
            }
示例#15
0
        public async Task <IActionResult> Login(UserForLoginDto UserForLogin)
        {
            var user = await _userManager.FindByEmailAsync(UserForLogin.Email);

            if (user is null)
            {
                return(Unauthorized());
            }

            var result = await _signInManager
                         .CheckPasswordSignInAsync(user, UserForLogin.Password, false);

            if (!result.Succeeded)
            {
                return(Unauthorized());
            }

            return(Ok(new UserToReturnForAuthDto
            {
                Token = _jwtGenerator.CreateToken(user),
                Username = user.UserName,
            }));
        }
示例#16
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                return(new User
                {
                    UserName = user.UserName,
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    Email = user.Email,
                    Token = _jwtGenerator.CreateToken(user),
                    Role = user.Role,
                });
            }
示例#17
0
            public async Task <UserDto> Handle(Command request, CancellationToken cancellationToken)
            {
                if (await _dataContext.Users.Where(x => x.Email == request.Email).AnyAsync())
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { message = "Email already exist" });
                }

                if (await _dataContext.Users.Where(x => x.UserName == request.Email).AnyAsync())
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { message = "UserName already exist" });
                }

                var user = new User
                {
                    UserName = request.Email,
                    Email    = request.Email,
                    Role     = request.Role
                };
                var result = await _userManager.CreateAsync(user, request.Password);



                if (result.Succeeded)
                {
                    if (request.Role.ToLower() == "doctor")
                    {
                        _dataContext.Doctors.Add(new Domain.Doctor {
                            User = user
                        });
                    }
                    ;
                    if (request.Role.ToLower() == "pacient")
                    {
                        _dataContext.Pacients.Add(new Pacient {
                            User = user
                        });
                    }
                    var success = await _dataContext.SaveChangesAsync(cancellationToken) > 0;

                    if (success)
                    {
                        return(new UserDto
                        {
                            Token = _jwtGenerator.CreateToken(user),
                        });
                    }
                }

                throw new Exception("Problem with saving changes");
            }
示例#18
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                //User accessor called the method to retrieve the username from the token
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                return(new User
                {
                    Username = user.UserName,
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    PhoneNumber = user.PhoneNumber,
                    Token = _jwtGenerator.CreateToken(user)
                });
            }
示例#19
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var username = _userAccessor.GetCurrentUsername();

                var user = await _userManager.FindByNameAsync(username);

                return(new User
                {
                    DisplayName = user.DisplayName,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                    Image = user.Photos.SingleOrDefault(p => p.IsMain)?.Url
                });
            }
示例#20
0
        public async Task <User> Login(UserLoginVm loginVm)
        {
            try
            {
                new MailAddress(loginVm.Email);
            }
            catch
            {
                throw new ArgumentException("Value has a invalid format.", nameof(loginVm.Email));
            }

            if (string.IsNullOrWhiteSpace(loginVm.Password))
            {
                throw new ArgumentException("Value can't be null or empty.", nameof(loginVm.Password));
            }

            var user = await _userManager.FindByEmailAsync(loginVm.Email);

            if (user == null)
            {
                throw new UnauthorizedAccessException("User doesn't exist.");
            }

            var result = await _signInManager.CheckPasswordSignInAsync(user, loginVm.Password, false);

            if (result.Succeeded)
            {
                return(new User()
                {
                    Email = user.Email,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user)
                });
            }

            throw new UnauthorizedAccessException("Password is invalid.");
        }
示例#21
0
            public async Task <LoggedInfo> Handle(Command request, CancellationToken cancellationToken)
            {
                if (await _context.Users.Where(x => x.Email == request.Email).AnyAsync())
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email address already in use" });
                }

                if (await _context.Users.Where(x => x.UserName == request.Username).AnyAsync())
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Email = "Username already in use" });
                }

                var person = new Person
                {
                    Id         = request.Id,
                    Lastname   = request.Lastname,
                    Firstname  = request.Firstname,
                    Middlename = request.Middlename,
                    Gender     = request.Gender,
                    Address    = request.Address
                };

                var role = _context.Roles.Where(x => x.Name == Constant.Customer);

                var user = new AppUser
                {
                    Email    = request.Email,
                    Fullname = Utility.FormatName(person),
                    UserName = request.Username,
                    Person   = person,
                    Role     = _context.Roles.Where(x => x.Name == (request.isRetailer ? "Retailer" : "Customer")).FirstOrDefault()
                };

                var register = await _userManager.CreateAsync(user, request.Password);

                if (register.Succeeded)
                {
                    return(new LoggedInfo
                    {
                        DisplayName = user.Fullname,
                        Username = user.UserName,
                        Image = null,
                        Token = _jwtGenerator.CreateToken(user),
                        Role = user.Role.Name
                    });
                }

                throw new Exception("Registration Failed");
            }
示例#22
0
            public async Task <User> Handle(ExternalLoginQuery request, CancellationToken cancellationToken)
            {
                var userInfo = await _facebookAccessor.FacebookLogin(request.AccessToken);

                if (userInfo == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { User = "******" });
                }
                var user = await _userManager.FindByEmailAsync(userInfo.Email);

                if (user != null && !user.EmailConfirmed)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Login = "******" });
                }
                if (user == null)
                {
                    user = new AppUser
                    {
                        DisplayName        = userInfo.Name,
                        Id                 = userInfo.Id,
                        Email              = userInfo.Email,
                        UserName           = "******" + userInfo.Id,
                        RefreshToken       = _jwtGenerator.GenerateRefreshToken(),
                        RefreshTokenExpiry = DateTime.Now.AddDays(30)
                    };
                    var photo = new Photo
                    {
                        Id     = "fb_" + userInfo.Id,
                        Url    = userInfo.Picture.Data.Url,
                        IsMain = true
                    };
                    user.Photos.Add(photo);

                    var result = await _userManager.CreateAsync(user);

                    if (!result.Succeeded)
                    {
                        throw new RestException(HttpStatusCode.BadRequest, new { User = "******" });
                    }
                }
                return(new User
                {
                    DisplayName = user.DisplayName,
                    Token = _jwtGenerator.CreateToken(user),
                    RefreshToken = user.RefreshToken,
                    Id = user.Id,
                    Image = user.Photos.FirstOrDefault(x => x.IsMain)?.Url
                });
            }
示例#23
0
            public async Task <AppUser> Handle(Query request, CancellationToken cancellationToken)
            {
                var email = _userAccessor.GetCurrentUsername();

                User user = new User();

                MySqlConnection connection = new MySqlConnection("Database=daedalusdb; Data Source=projectdaedalus.mysql.database.azure.com; User Id=daedalus@projectdaedalus; Password=xDEvk7Cr");

                using (connection)
                {
                    string       sqlQuery = $"SELECT * FROM appuser WHERE email = '" + email + "'";
                    MySqlCommand command  = new MySqlCommand(sqlQuery, connection);

                    try
                    {
                        connection.Open();
                        command.Prepare();
                        MySqlDataReader reader = command.ExecuteReader();

                        while (reader.Read())
                        {
                            user.Email     = reader["Email"].ToString();
                            user.Id        = reader["Id"].ToString();
                            user.FirstName = reader["FirstName"].ToString();
                            user.LastName  = reader["LastName"].ToString();
                            user.Role      = Convert.ToInt32(reader["Role"]);
                        }
                        reader.Close();
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.ToString());
                        connection.Close();
                    }
                    connection.Close();
                }

                return(new AppUser
                {
                    Token = _jwtGenerator.CreateToken(user),
                    Id = user.Id,
                    Email = user.Email,
                    FirstName = user.FirstName,
                    LastName = user.LastName,
                    Role = user.Role,
                    // Username = user.UserName,
                    Image = null
                });
            }
示例#24
0
        public async Task <User> SignIn(LoginAuth login)
        {
            var user = await _userManager.FindByEmailAsync(login.Email);

            if (user == null)
            {
                throw new RestException(HttpStatusCode.Unauthorized);
            }

            var result = await _signInManager
                         .CheckPasswordSignInAsync(user, login.Password, false);

            if (result.Succeeded)
            {
                //generate token
                return(new User
                {
                    DisplayName = user.DisplayName,
                    Token = _jwtGenerator.CreateToken(user),
                    Username = user.UserName,
                });
            }
            throw new RestException(HttpStatusCode.Unauthorized);
        }
示例#25
0
        public async Task <UserVm> Handle(CurrentUserQuery request, CancellationToken cancellationToken)
        {
            var user = await _userManager.FindByIdAsync(_currentUserService.UserId);

            var roles = await _userManager.GetRolesAsync(user);

            return(new UserVm
            {
                Id = user.Id,
                Token = await _jwtGenerator.CreateToken(user),
                Username = user.UserName,
                IsClient = await _userManager.IsInRoleAsync(user, RolesEnum.Client),
                Roles = roles
            });
        }
示例#26
0
            public async Task <AuthUserData> Handle(Current request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userSession.GetUserSession());

                var roles = (await _userManager.GetRolesAsync(user)).ToList();

                return(new AuthUserData
                {
                    FullName = user.FullName,
                    Username = user.UserName,
                    Email = user.Email,
                    Token = _jwtGenerator.CreateToken(user, roles),
                    Image = null
                });
            }
示例#27
0
        public async Task <LoginViewModel> Handle(LoginQuery request, CancellationToken cancellationToken)
        {
            var user = await _requestHelper.SendRequest(_authSettings.Url, request.Password, request.Username);

            if (!user.Success)
            {
                _notification.AddNotification("Usuário", "Usuario ou senha incorretos");
                return(null);
            }

            return(new LoginViewModel
            {
                Token = _jwtGenerator.CreateToken()
            });
        }
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                var following = user.Followings.Select(f => f.Target).ToList();
                var followers = user.Followers.Select(f => f.Observer).ToList();

                return(new User
                {
                    DisplayName = user.DisplayName,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                    Image = user.Photos.FirstOrDefault(p => p.IsMainPhoto)?.Url
                });
            }
示例#29
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.Users
                           .Include(x => x.Images)
                           .SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername());

                return(new User
                {
                    DisplayName = user.DisplayName,
                    Username = user.UserName,
                    Token = _jwtGenerator.CreateToken(user),
                    Image = user.Images.FirstOrDefault(x => x.IsMain)?.Url,
                    Locale = user.Locale
                });
            }
示例#30
0
            public async Task <User> Handle(Query request, CancellationToken cancellationToken)
            {
                var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUserName());

                if (user == null)
                {
                    throw new RestException(HttpStatusCode.Unauthorized);
                }
                return(new User
                {
                    Username = user.UserName,
                    DisplayName = user.DisplayName,
                    Token = _jwtGenerator.CreateToken(user),
                    Image = null
                });
            }