public string AddUser(OAuthUserDetails userDetails, string code)
    {
      dynamic db = GetDatabase();

      var salt = BCryptHelper.GenerateSalt();
      var password = PasswordUtil.GeneratePassword();
      var hashedPassword = PasswordUtil.HashPassword(password, salt);

      var user = db.Users.FindByEmail(userDetails.email);

      if (user == null)
      {
        db.Users.Insert(new User
                          {
                            Email = userDetails.email,
                            Name = userDetails.name,
                            AppsCode = code,
                            Salt = salt,
                            Password = hashedPassword
                          });
      }
      else
      {
        user.Salt = salt;
        user.Password = hashedPassword;

        db.Users.Update(user);
      }

      return password;
    }
Ejemplo n.º 2
0
        async void OnAuthCompleted(object sender, AuthenticatorCompletedEventArgs e)
        {
            var authenticator = sender as OAuth2Authenticator;

            if (authenticator != null)
            {
                authenticator.Completed -= OnAuthCompleted;
                authenticator.Error     -= OnAuthError;
            }


            if (e.IsAuthenticated)
            {
                OAuthUserDetails user = null;

                // If the user is authenticated, request their basic user data from Google
                // UserInfoUrl = https://www.googleapis.com/oauth2/v2/userinfo
                var request  = new OAuth2Request("GET", new Uri(OAuthConstants.GoogleUserInfoUrl), null, e.Account);
                var response = await request.GetResponseAsync();

                if (response != null)
                {
                    // Deserialize the data and store it in the account store
                    // The users email address will be used to identify data in SimpleDB

                    string userJson = await response.GetResponseTextAsync();

                    user = JsonConvert.DeserializeObject <OAuthUserDetails>(userJson);
                }
                LFLens.Helpers.Settings.AccessToken  = null;
                LFLens.Helpers.Settings.RefreshToken = null;
                LFLens.Helpers.Settings.AccessTokenExpirationDate = DateTime.UtcNow;

                await store.SaveAsync(account = e.Account, OAuthConstants.AppName);

                if (account != null)
                {
                    LFLens.Helpers.Settings.Username       = user.Name;
                    LFLens.Helpers.Settings.EmailID        = user.Email;
                    LFLens.Helpers.Settings.UserProfileURL = user.Picture;


                    LFLens.Helpers.Settings.AccessToken  = account.Properties["access_token"].ToString();
                    LFLens.Helpers.Settings.RefreshToken = account.Properties["refresh_token"].ToString();

                    LFLens.Helpers.Settings.AccessTokenExpirationDate = DateTime.UtcNow.AddSeconds(Convert.ToDouble(account.Properties["expires_in"].ToString()));


                    Application.Current.MainPage = new MainPage();

                    //
                }
            }
        }