Exemple #1
0
        public static string LogIn(UserDtoOut dto)
        {
            if (BYPASS_LOGIN)
            {
                return("admin");
            }

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(GetPath("login"));

            request.Timeout     = 10000;
            request.Method      = "POST";
            request.ContentType = "application/json; charset=utf-8";

            using (var streamWriter = new StreamWriter(request.GetRequestStream()))
            {
                string json = Newtonsoft.Json.JsonConvert.SerializeObject(dto);
                streamWriter.Write(json);
                streamWriter.Close();
            }

            using (var response = request.GetResponse())
            {
                return((new StreamReader(response.GetResponseStream())).ReadToEnd());
            }
        }
Exemple #2
0
        public async Task <ActionResult <UserDtoOut> > Register([FromBody] UserDtoIn userDtoIn)
        {
            if (string.IsNullOrWhiteSpace(userDtoIn.EMail))
            {
                return(BadRequest(new {
                    message = "Invalid Email Address"
                }));
            }

            if (string.IsNullOrWhiteSpace(userDtoIn.Password))
            {
                return(BadRequest(new {
                    message = "Invalid password"
                }));
            }

            if (string.IsNullOrWhiteSpace(userDtoIn.UserName))
            {
                userDtoIn.UserName = userDtoIn.EMail;
            }

            IdUser user = new IdUser
            {
                UserName = userDtoIn.UserName,
                Email    = userDtoIn.EMail,
            };

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

            var    userDtoOut = new UserDtoOut();
            string name       = "";

            if (result.Succeeded)
            {
                var claims = new List <Claim>();

                if (!string.IsNullOrWhiteSpace(userDtoIn.FirstName))
                {
                    claims.Add(new Claim(JwtClaimTypes.GivenName, userDtoIn.FirstName));
                    userDtoOut.FirstName = userDtoIn.FirstName;
                    name += userDtoIn.FirstName;
                }
                if (!string.IsNullOrWhiteSpace(userDtoIn.LastName))
                {
                    claims.Add(new Claim(JwtClaimTypes.FamilyName, userDtoIn.LastName));
                    userDtoOut.LastName = userDtoIn.LastName;
                    if (name.Count() > 0)
                    {
                        name += " " + userDtoOut.LastName;
                    }
                    else
                    {
                        name += userDtoIn.LastName;
                    }
                }
                if (!string.IsNullOrWhiteSpace(userDtoIn.DateOfBirth))
                {
                    claims.Add(new Claim(JwtClaimTypes.BirthDate, userDtoIn.DateOfBirth));
                    userDtoOut.DateOfBirth = userDtoIn.DateOfBirth;
                }
                if (!string.IsNullOrWhiteSpace(userDtoIn.Role))
                {
                    claims.Add(new Claim(JwtClaimTypes.Role, userDtoIn.Role));
                    userDtoOut.Role = userDtoIn.Role;
                }

                if (!string.IsNullOrWhiteSpace(userDtoIn.UserNumber))
                {
                    claims.Add(new Claim(CustomClaims.UserNumber, userDtoIn.UserNumber));
                    userDtoOut.UserNumber = userDtoIn.UserNumber;
                }

                // Add claim to access to IdApi1 and IdUserApi for all users per default.
                claims.Add(new Claim(CustomClaims.ApiAccess, "IdApi1"));
                claims.Add(new Claim(CustomClaims.ApiAccess, "IdUserApi"));

                if (userDtoIn.UserName != userDtoIn.EMail)
                {
                    name = userDtoIn.UserName;
                }
                if (name.Count() == 0)
                {
                    name = user.Id;
                }
                claims.Add(new Claim(JwtClaimTypes.Name, name));

                result = await _userManager.AddClaimsAsync(user, claims);

                await _identityDbContext.SaveChangesAsync();
            }
            if (result.Succeeded)
            {
                userDtoOut.Id       = user.Id;
                userDtoOut.UserName = user.UserName;
                userDtoOut.EMail    = user.Email;
                return(StatusCode(201, userDtoOut));
            }
            return(handleIdentityError(result.Errors, user));
        }