public ActionResult <MessageModel <RegisterResponseDTO> > Login([FromBody] LoginUserRequest loginRequest) { if (!ModelState.IsValid) { return(BadRequest()); } var loginUserRegistger = new UserRegisterType() { AuthPlatformId = loginRequest.userId, RegisterType = (byte)loginRequest.loginType }; dynamic verifiedData = userService.VerifyUserInfo(loginRequest.accessToken, loginRequest.permissions, loginUserRegistger).Result; if (verifiedData == null || verifiedData["name"] == null || verifiedData["email"] == null) { return(Unauthorized(new MessageModel <Object> { Status = (int)HttpStatusCode.Unauthorized, Success = false, Msg = "Unauthorized", Data = null })); } loginUserRegistger.Name = verifiedData["name"].ToString(); loginUserRegistger.Email = verifiedData["email"].ToString(); if (userService.GetUserInfo(loginUserRegistger).Result == null) { userService.AddNewUserInfo(loginUserRegistger).Wait(); } var loginUser = userService.GetUserInfo(loginUserRegistger).Result; var accessToken = this.jwtHandler.CreateAccessToken((int)loginUser.Id, loginUser.Email, loginUser.Name); var remoteIpAddress = HttpContext.Connection.RemoteIpAddress; UserLoginLog loginLog = new UserLoginLog { Ip = remoteIpAddress.ToString(), LoginType = (byte)loginRequest.loginType, LoginTime = DateTime.UtcNow, UserId = loginUser.Id }; userLoginLogService.AddLoginLog(loginLog); return(Ok(new MessageModel <RegisterResponseDTO> { Data = new RegisterResponseDTO() { Jwt = accessToken.Token, kycStatus = (short)loginUser.KycStatus } })); }
public async Task <UserInfoView> GetUserInfo(UserRegisterType loginUser) { var list = await dbContext.UserInfoView.Where(user => user.AuthPlatformId == loginUser.AuthPlatformId && user.RegisterType == loginUser.RegisterType).ToListAsync(); var loggedingUser = list.FirstOrDefault(); return(loggedingUser); }
public bool ReigsterUser(User user, UserArc userArc, UserRegisterType userRegisterType) { dbContext.User.Update(user); dbContext.UserArc.Update(userArc); dbContext.UserRegisterType.Update(userRegisterType); dbContext.SaveChanges(); return(true); }
public async Task <bool> AddNewUserInfo(UserRegisterType loginUser) { using var transaction = dbContext.Database.BeginTransaction(); try { var user = new User(); await dbContext.User.AddAsync(user); dbContext.SaveChanges(); var userArc = new UserArc() { UserId = user.Id }; await dbContext.UserArc.AddAsync(userArc); dbContext.SaveChanges(); var userRegisterType = new UserRegisterType() { UserId = user.Id, AuthPlatformId = loginUser.AuthPlatformId, RegisterType = loginUser.RegisterType, Email = loginUser.Email, Name = loginUser.Name }; await dbContext.UserRegisterType.AddAsync(userRegisterType); dbContext.SaveChanges(); // Commit transaction if all commands succeed, transaction will auto-rollback // when disposed if either commands fails transaction.Commit(); return(true); } catch (Exception ex) { logger.LogError(ex, null); transaction.Rollback(); return(false); } }
public async Task <dynamic> VerifyUserInfo(string accessToken, string permissions, UserRegisterType loginUser) { switch ((LoginType)loginUser.RegisterType) { case LoginType.FB: IAuthService authService = authServices.Single(service => service.LoginType == LoginType.FB); return(await authService.VerifyUserInfo(accessToken, permissions, loginUser)); default: return(null); } }
public ActionResult <MessageModel <RegisterResponseDTO> > ModifyOwnUserInfo([FromBody] RegisterRequest registerReq) { UserInfoDTO userModel = null; Tools.Utility.TokenResource accessToken = null; if (!ModelState.IsValid) { var errors = ModelState.Select(x => x.Value.Errors) .Where(y => y.Count > 0) .ToList(); return(BadRequest(new MessageModel <RemitRecordDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = string.Join(",", errors) })); } var userId = long.Parse(User.FindFirstValue("id")); UserArc userArc = userService.GetUserArcById(userId); if (userArc.KycStatus != (short)KycStatusEnum.DRAFT_MEMBER) { return(BadRequest(new MessageModel <RegisterResponseDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = "Only Draft member can register" } )); } if (String.IsNullOrEmpty(userArc.IdImageA) || String.IsNullOrEmpty(userArc.IdImageB)) { return(BadRequest(new MessageModel <RegisterResponseDTO> { Status = (int)HttpStatusCode.BadRequest, Success = false, Msg = "Please upload your ID photo" } )); } User user = userService.GetUserById(userId); UserRegisterType userRegisterType = userService.GetUserRegisterTypeById(userId); //user data user.Phone = registerReq.phone; user.Email = userRegisterType.Email; user.Gender = (byte)registerReq.gender; user.Birthday = registerReq.birthday; //userArc data userArc.ArcName = registerReq.name; userArc.Country = registerReq.country; userArc.ArcNo = registerReq.personalID; userArc.PassportId = registerReq.passportNumber; userArc.BackSequence = registerReq.backCode; userArc.ArcIssueDate = registerReq.issue; userArc.ArcExpireDate = registerReq.expiry; userArc.KycStatus = (short)KycStatusEnum.WAITING_VERIFIED_KYC; userArc.KycStatusUpdateTime = DateTime.UtcNow; //update UserRegisterType data userRegisterType.RegisterTime = DateTime.Now; bool isRegister = userService.ReigsterUser(user, userArc, userRegisterType); if (isRegister == false) { return(BadRequest()); } UserInfoView userInfo = userService.GetUserInfoById(userId); //// 將 user 置換成 ViewModel userModel = mapper.Map <UserInfoDTO>(userInfo); accessToken = jwtHandler.CreateAccessToken(userModel.Id, userModel.Email, userModel.ArcName); // 系統掃ARC No. BackgroundJob.Enqueue(() => userService.SystemVerifyArcForRegisterProcess(int.Parse(User.FindFirstValue("id")))); //return Ok(new MessageModel<UserInfoDTO> //{ // Data = userModel //}); return(Ok(new MessageModel <RegisterResponseDTO> { Data = new RegisterResponseDTO { Jwt = accessToken.Token, kycStatus = (short)userModel.KycStatus } })); }
public async Task <dynamic> VerifyUserInfo(string accessToken, string permissions, UserRegisterType loginUser) { //debug token var isTokenValid = await VerifyAccessToken(accessToken); if (!isTokenValid) { return(false); } // verify user info dynamic result = await GetAsync <dynamic>(accessToken, "me", $"fields=name,{permissions}"); if (result.GetValue("error") != null) { return(null); } if (result == null) { throw new Exception("User from this token not exist"); } // check fb id is matched var id = result.GetValue("id").ToString(); if (loginUser.AuthPlatformId.Equals(id)) { return(result); } return(null); }