Beispiel #1
0
        public async Task <IHttpActionResult> FacebookUpdate(AccountFacebookConnect model)
        {
            var client = new FacebookClient(model.AccessToken);

            client.AppId     = AppConfig.Settings.FacebookId;
            client.AppSecret = AppConfig.Settings.FacebookSecret;

            dynamic fbresult = client.Get("me?fields=id,email,first_name,last_name,gender,locale,link,timezone,location,picture");

            var social = await AppDatabase.UserFacebookClaims.FindAsync(fbresult.id);

            var user = await AppDatabase.Users.FindAsync(UserId);

            if (social == null)
            {
                social             = new UserFacebookClaim();
                social.Id          = fbresult.id;
                social.User        = user;
                social.UserId      = UserId;
                social.AccessToken = model.AccessToken;
                social.Provider    = APIConstants.FACEBOOK;
                AppDatabase.UserFacebookClaims.Add(social);
            }

            FacebookUpdateInternal(social, fbresult);

            await AppDatabase.SaveChangesAsync();

            Session.UpdateFrom(user);
            return(Ok(GetAccountDetails()));
        }
Beispiel #2
0
 void FacebookUpdateInternal(UserFacebookClaim social, dynamic fbresult)
 {
     social.Email     = fbresult.email;
     social.FirstName = fbresult.first_name;
     social.LastName  = fbresult.last_name;
     social.Link      = fbresult.link;
     social.Picture   = String.Format("http://graph.facebook.com/{0}/picture", fbresult.id);
     social.Gender    = fbresult.gender;
     social.Local     = fbresult.locale;
 }
 void FacebookUpdateInternal(UserFacebookClaim social, dynamic fbresult)
 {
     social.Email = fbresult.email;
     social.FirstName = fbresult.first_name;
     social.LastName = fbresult.last_name;
     social.Link = fbresult.link;
     social.Picture = String.Format("http://graph.facebook.com/{0}/picture", fbresult.id);
     social.Gender = fbresult.gender;
     social.Local = fbresult.locale;
 }
        public async Task<IHttpActionResult> FacebookUpdate(AccountFacebookConnect model)
        {
            var client = new FacebookClient(model.AccessToken);
            client.AppId = AppConfig.Settings.FacebookId;
            client.AppSecret = AppConfig.Settings.FacebookSecret;

            dynamic fbresult = client.Get("me?fields=id,email,first_name,last_name,gender,locale,link,timezone,location,picture");

            var social = await AppDatabase.UserFacebookClaims.FindAsync(fbresult.id);
            var user = await AppDatabase.Users.FindAsync(UserId);

            if (social == null)
            {
                social = new UserFacebookClaim();
                social.Id = fbresult.id;
                social.User = user;
                social.UserId = UserId;
                social.AccessToken = model.AccessToken;
                social.Provider = APIConstants.FACEBOOK;
                AppDatabase.UserFacebookClaims.Add(social);
            }

            FacebookUpdateInternal(social, fbresult);

            await AppDatabase.SaveChangesAsync();
            Session.UpdateFrom(user);
            return Ok(GetAccountDetails());
        }
        public async Task<IHttpActionResult> FacebookCreate(AccountFacebookConnect model)
        {
            var client = new FacebookClient(model.AccessToken);
            client.AppId = AppConfig.Settings.FacebookId;
            client.AppSecret = AppConfig.Settings.FacebookSecret;

            dynamic fbresult = client.Get("me?fields=id,email,first_name,last_name,gender,locale,link,timezone,location,picture");
            string email = fbresult.email;

            var social = await AppDatabase.UserFacebookClaims.FindAsync(fbresult.id);

            if (social != null)
            {
                // old profile
                FacebookUpdateInternal(social, fbresult);
                await AppDatabase.SaveChangesAsync();

                var oldUser = social.User;
                Session.UpdateFrom(oldUser);
                return Ok(GetAccountDetails());
            }

            //email in use ?
            var user3 = await AppDatabase.Users.FirstOrDefaultAsync(o => o.Email == email);
            if (user3 != null)
            {
                return BadRequest("Email is in use. Try account recovery.");
            }

            // new user
            var password = new string(Guid.NewGuid().ToString().Take(7).ToArray());
            var user = new UserAccount
            {
                CreatedOn = DateTime.UtcNow,
                ModifiedOn = DateTime.UtcNow,
                Email = email,
                Id = Guid.NewGuid().ToString(),
                EmailPassword = UserPassword.Create(password),

            };
            AppDatabase.Users.Add(user);

            social = new UserFacebookClaim
            {
                Id = fbresult.id,
                UserId = user.Id,
                User = user,
                AccessToken = model.AccessToken
            };

            FacebookUpdateInternal(social, fbresult);

            AppDatabase.UserFacebookClaims.Add(social);

            await SendWelcomeMail(new UserEmailViewModel
            {
                UserId = user.Id,
                UserEmail = user.Email
            });

            await AppDatabase.SaveChangesAsync();

            Session.UpdateFrom(user);
            return Ok(GetAccountDetails());
        }
Beispiel #6
0
        public async Task <IHttpActionResult> FacebookCreate(AccountFacebookConnect model)
        {
            var client = new FacebookClient(model.AccessToken);

            client.AppId     = AppConfig.Settings.FacebookId;
            client.AppSecret = AppConfig.Settings.FacebookSecret;

            dynamic fbresult = client.Get("me?fields=id,email,first_name,last_name,gender,locale,link,timezone,location,picture");
            string  email    = fbresult.email;

            var social = await AppDatabase.UserFacebookClaims.FindAsync(fbresult.id);

            if (social != null)
            {
                // old profile
                FacebookUpdateInternal(social, fbresult);
                await AppDatabase.SaveChangesAsync();

                var oldUser = social.User;
                Session.UpdateFrom(oldUser);
                return(Ok(GetAccountDetails()));
            }

            //email in use ?
            var user3 = await AppDatabase.Users.FirstOrDefaultAsync(o => o.Email == email);

            if (user3 != null)
            {
                return(BadRequest("Email is in use. Try account recovery."));
            }

            // new user
            var password = new string(Guid.NewGuid().ToString().Take(7).ToArray());
            var user     = new UserAccount
            {
                CreatedOn     = DateTime.UtcNow,
                ModifiedOn    = DateTime.UtcNow,
                Email         = email,
                Id            = Guid.NewGuid().ToString(),
                EmailPassword = UserPassword.Create(password),
            };

            AppDatabase.Users.Add(user);

            social = new UserFacebookClaim
            {
                Id          = fbresult.id,
                UserId      = user.Id,
                User        = user,
                AccessToken = model.AccessToken
            };

            FacebookUpdateInternal(social, fbresult);

            AppDatabase.UserFacebookClaims.Add(social);

            await SendWelcomeMail(new UserEmailViewModel
            {
                UserId    = user.Id,
                UserEmail = user.Email
            });

            await AppDatabase.SaveChangesAsync();

            Session.UpdateFrom(user);
            return(Ok(GetAccountDetails()));
        }