public async Task <IHttpActionResult> Put([FromBody] Core.Entities.Model.UserProfile model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            try
            {
                model.Id = GetUserId();
                //if (model.Level > 0)
                //{
                //    await _repoUser.UpdateClaimAsync(model.Id, new System.Security.Claims.Claim("Level", model.Level.ToString()));
                //}
                _uow.UserProfile.ValidateUserBeforeUI(model.Mobile, model.Email, model.Id);
                var user = await _repoUser.FindByNameAsync(model.Email);

                if (user != null)
                {
                    await _uow.UserProfile.IU(model);

                    await _repoUser.SetPhoneNumberAsync(model.Id, model.Mobile);
                }
                return(Ok());
            }
            catch (BusinessException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                _log.Error(ex);
                return(BadRequest(this.General_Err));
            }
        }
Exemple #2
0
        public async Task <IHttpActionResult> ObtainLocalAccessToken(string provider, string externalAccessToken, string userName)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(provider) || string.IsNullOrWhiteSpace(externalAccessToken))
                {
                    return(BadRequest("Provider or external access token is not sent"));
                }

                var verifiedAccessToken = await VerifyExternalAccessToken(provider, externalAccessToken);

                if (verifiedAccessToken == null)
                {
                    return(BadRequest("Invalid Provider or External Access Token"));
                }
                ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);

                //IdentityUser user = await _repoUser.FindAsync(new UserLoginInfo(provider, verifiedAccessToken.user_id));
                var user = await _repoUser.FindByNameAsync(userName);

                Core.Entities.Model.UserProfile profile = null;
                if (user == null)
                {
                    profile = _uow.UserProfile.GetUserByProviderId(externalLogin.UserId, provider);
                    user    = profile == null ? null : await _repoUser.FindByNameAsync(profile.Email);
                }
                else
                {
                    profile = _uow.UserProfile.Get(user.Id);
                }

                bool hasRegistered = user != null;
                //var profile = _uow.UserProfile.Get(user.Id);
                if (!hasRegistered)
                {
                    return(BadRequest("Chưa đăng kí tài khoản"));
                }
                else if (profile == null)
                {
                    var roles = await _repoUser.GetRolesAsync(user.Id);

                    await _uow.UserProfile.IU(new Core.Entities.Model.UserProfile()
                    {
                        Id         = user.Id,
                        Email      = user.Email,
                        Mobile     = user.PhoneNumber,
                        Role       = roles.Count > 0 ? roles.FirstOrDefault() : Conts.Role_Member,
                        UserStatus = (int)UserStatus.Done,
                        ActiveDate = DateTime.Now
                    });
                }
                //generate access token response
                var accessTokenResponse = GenerateLocalAccessTokenResponse(user);
                return(Ok(accessTokenResponse));
            }catch (Exception ex)
            {
                _log.Error(ex);
                return(BadRequest());
            }
        }
        public async Task <IHttpActionResult> Put([FromBody] Core.Entities.Model.UserProfile model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }
            try
            {
                model.Id = GetUserId();
                await _uow.UserProfile.IU(model);

                return(Ok());
            }
            catch (BusinessException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                return(BadRequest(this.General_Err));
            }
        }