예제 #1
0
        public async Task <IActionResult> Post([FromBody] CredentialsModel model)
        {
            string token;

            try
            {
                token = await authAdapter.Authenticate(model);
            }
            catch (ApplicationAuthenticationException exception)
            {
                return(new BadRequestObjectResult(exception.Message));
            }

            return(new OkObjectResult(token));
        }
        public async Task <JsonResult> Login([FromBody] LoginViewModel vm)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    // check if any values tracked in Auth0 have changed
                    LoginResponseViewModel responseVM = await _authAdapter.Authenticate(vm);

                    var user = _userRepo.GetUserByExternalId(responseVM.ExternalId);
                    if (user == null)
                    {
                        user = _userRepo.GetAppUserByEmail(vm.Email);
                        if (user == null)
                        {
                            throw new Exception("Unable to locate user");
                        }
                        else
                        {
                            //update with externalId
                            user.ExternalId = responseVM.ExternalId;
                            _userRepo.Base.SaveAll(User);
                        }
                    }
                    responseVM.AppUserId    = user.AppUserId;
                    responseVM.AvatarUrl    = user.AvatarUrl;
                    responseVM.Email        = user.Email;
                    responseVM.FullName     = user.FirstName + " " + user.LastName;
                    responseVM.AdAssassinId = user.AdAssassinId;
                    responseVM.Roles        = user.UserRoles.Select(k => k.Role.Name).ToArray();
                    Response.StatusCode     = (int)HttpStatusCode.OK;
                    return(Json(responseVM));
                }
                else
                {
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(Json(MsgFactory.Error(ModelState)));
                }
            }
            catch (Exception ex)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json(MsgFactory.Error(ex)));
            }
        }