Пример #1
0
        public async Task <LoginResults> GoogleLogin(GoogleRegisterViewModel input)
        {
            var result        = new Status();
            var returnResults = new LoginResults {
                status = new Status(), userDetail = new UserViewModel()
            };

            try
            {
                var user = new User {
                    FirstName = input.givenName, LastName = input.familyName, Email = input.email, RoleID = 2, Source = Helpers.Constants.SOURCE_GOOGLE, UserName = input.email
                };
                var existUsers = await _context.Users.Where(x => x.Email == input.email).ToListAsync();

                if (existUsers.Count > 0)
                {
                    var valid = existUsers.Where(x => x.Deleted == false).FirstOrDefault();
                    if (valid != null)
                    {
                        user = valid;
                    }
                    else
                    {
                        throw new Exception("Given email is restricted, please use another email");
                    }
                }
                var password = Helpers.StringCipher.Encrypt("Password*123");

                //ENCRYPTS PASSWORD
                if (user.ID == 0)
                {
                    user.Password         = password;
                    user.IsFirstTimeLogin = true;
                    _context.Users.Add(user);
                    await _context.SaveChangesAsync();
                }
                if (user != null)
                {
                    var googleRegister = input.Adapt <GoogleRegister>();
                    googleRegister.googleid    = input.id;
                    googleRegister.accessToken = input.authentication.accessToken;
                    googleRegister.idToken     = input.authentication.idToken;
                    googleRegister.User        = user;
                    googleRegister.UserId      = user.ID;
                    _context.GoogleRegisters.Add(googleRegister);
                    await _context.SaveChangesAsync();

                    returnResults.userDetail = user.Adapt <UserViewModel>();
                    result = new Status {
                        StatusCode = 200, StatusDisplay = "Logged in Successfully", StatusValue = true
                    };
                }
                else
                {
                    result = new Status {
                        StatusCode = 198, StatusDisplay = "UserName and Password does not match", StatusValue = false
                    };
                }
            }
            catch (Exception ex)
            {
                result = new Status {
                    StatusCode = 500, StatusDisplay = ex.Message, StatusValue = false
                };
            }
            returnResults.status = result;
            return(returnResults);
        }
Пример #2
0
        public async Task <IActionResult> GoogleLogin(GoogleRegisterViewModel input)
        {
            var returnResut = await accountsServices.GoogleLogin(input);

            return(new JsonResult(returnResut));
        }