public async Task <LoginTokenDataModel> AddExternalUser(ExternalUserModel addUserModel)
        {
            try
            {
                if (addUserModel != null)
                {
                    List <KeyValuePair <string, object> > param = new List <KeyValuePair <string, object> >()
                    {
                        new KeyValuePair <string, object>("@dob", addUserModel.Dob),
                        new KeyValuePair <string, object>("@gender", addUserModel.Gender),
                        new KeyValuePair <string, object>("@firstName", addUserModel.FirstName),
                        new KeyValuePair <string, object>("@lastName", addUserModel.LastName),
                        new KeyValuePair <string, object>("@email", addUserModel.Email),
                        new KeyValuePair <string, object>("@mobile", addUserModel.Mobile),
                        new KeyValuePair <string, object>("@Provider", addUserModel.Provider),
                        new KeyValuePair <string, object>("@ProviderKey", addUserModel.ProviderKey)
                    };
                    SigninDetails   signinDetails   = new SigninDetails();
                    CredentialModel credentialModel = new CredentialModel()
                    {
                        isExternal = true, UserName = addUserModel.Email
                    };


                    DataExecutor.ExecuteScalar(UtilityConstant.Procedures.Mst_AddExternalUser, param);

                    return(signinDetails.CheckUserCredentials(credentialModel));
                }
                return(new LoginTokenDataModel());
            }
            catch (Exception ex)
            {
                return(new LoginTokenDataModel());
            }
        }
        async void OnGoogleLogin(object sender, EventArgs args)
        {
            var userdata = await CrossGoogleClient.Current.LoginAsync();

            GoogleUser data = userdata.Data;

            ExternalUserModel userinfo = new ExternalUserModel();

            userinfo.id           = data.Id;
            userinfo.idToken      = data.Id;
            userinfo.name         = data.Name;
            userinfo.email        = data.Email;
            userinfo.profileImage = data.Picture.AbsoluteUri;

            userinfo.LoginProvider = "GOOGLE".ToUpper();
            userinfo.provider      = "GOOGLE".ToUpper();
            bool result = await(new LoginServices()).ExternalLogin(userinfo);

            if (result)
            {
                await Navigation.PopAsync();
            }
            else
            {
                await DisplayAlert("", "Not able to Login!", "Ok");
            }
        }
        public async Task <IActionResult> Create([Bind("Id,UserName,FullName,Password,Email,Ext,Mobile,DptId,VendorId,DateCreated,LastActivityDate,Status")] AppUserModel appUserModel)
        {
            if (ModelState.IsValid)
            {
                /* Check userName. */
                var nameIsExist = _context.AppUsers.Where(u => u.UserName == appUserModel.UserName).FirstOrDefault();
                if (nameIsExist != null)
                {
                    ModelState.AddModelError("UserName", "此ID已被使用");
                    return(View(appUserModel));
                }

                /* Create user to appUser table. */
                appUserModel.DateCreated = DateTime.Now;
                _context.Add(appUserModel);
                /* Create same data to externalUsers table. */
                ExternalUserModel externalUserModel = new ExternalUserModel()
                {
                    Id       = appUserModel.Id,
                    Password = appUserModel.Password,
                    UserName = appUserModel.UserName
                };
                _context.Add(externalUserModel);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(appUserModel));
        }
        async void OnFacebookLogin(object sender, EventArgs args)
        {
            var userdata = await CrossFacebookClient.Current.RequestUserDataAsync(new string[] { "email", "first_name", "gender", "last_name", "birthday" }, new string[] { "email", "user_birthday" });

            var data = userdata.Data;

            //var json = JsonConvert.SerializeObject(data);
            var d = JsonConvert.DeserializeObject <FacebookModel>(data);

            ExternalUserModel userinfo = new ExternalUserModel();

            userinfo.id            = d.id;
            userinfo.idToken       = d.id;
            userinfo.name          = d.first_name;
            userinfo.email         = d.email;
            userinfo.LoginProvider = "FACEBOOK".ToUpper();
            userinfo.provider      = "FACEBOOK".ToUpper();

            bool result = await(new LoginServices()).ExternalLogin(userinfo);

            if (result)
            {
                await Navigation.PopAsync();
            }
            else
            {
                await DisplayAlert("", "Not able to Login!", "Ok");
            }
        }
        async void OnExternalLogin(object sender, EventArgs args)
        {
            ExternalUserModel um = new ExternalUserModel();

            await(new RegisterServices()).RegisterExternal(um);
            //var externalDetails = await (new RegisterServices()).GetExternalDetails();
            //await (new RegisterServices()).FacebookSignUp(externalDetails.Where(x => x.Name.ToUpper() == "FACEBOOK").FirstOrDefault());
        }
Example #6
0
        public async Task <bool> ExternalLogin(ExternalUserModel userModel)
        {
            try
            {
                if (CrossConnectivity.Current.IsConnected)
                {
                    HttpClient httpClient = new HttpClient();

                    var uri     = new Uri(string.Concat(Constants.baseUrl, "/api/Account/GoogleExternalSignUp"));
                    var json    = JsonConvert.SerializeObject(userModel);
                    var content = new StringContent(json, Encoding.UTF8, "application/json");

                    // var response = await httpClient.PostAsync(uri, content);

                    var requestTask = httpClient.PostAsync(uri, content);
                    var response    = Task.Run(() => requestTask);

                    string result = await response.Result.Content.ReadAsStringAsync();

                    var message = JsonConvert.DeserializeObject <ExternalLoginResponseModel>(result);

                    if (response.Result.IsSuccessStatusCode)
                    {
                        RegisterUserModel rum = new RegisterUserModel();

                        rum.Id            = int.Parse(message.id);
                        rum.UserName      = message.userName;
                        rum.Email         = message.email;
                        rum.LoginProvider = userModel.LoginProvider;
                        rum.Role          = message.roles;
                        rum.profileImage  = message.profileImage;

                        rum.isLoggedIn = true;

                        App.Database.SaveUser(rum);

                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            catch (Exception e)
            {
                Console.Write(e.StackTrace.ToString());
                return(false);
            }

            return(false);
        }
 public ActionResult ApproveExternalUser()
 {
     var externalUserList = from e in db.ProjectLaucherSet_ExtenalUser where e.isDisabled == true select e;
     List<ExternalUserModel> modelList = new List<ExternalUserModel>();
     foreach (ProjectLaucherSet_ExtenalUser e in externalUserList)
     {
         ExternalUserModel model = new ExternalUserModel();
         model.external_user = e;
         model.laucher = e.ProjectLaucherSet;
         modelList.Add(model);
     }
     return View(modelList);
 }
        //
        //
        public ActionResult AdminExternals()
        {
            List<ExternalUserModel> modelList = new List<ExternalUserModel>();
            try
            {
                List<ProjectLaucherSet_ExtenalUser> externals = (from e in db.ProjectLaucherSet_ExtenalUser
                                                                 select e).ToList();

                foreach (ProjectLaucherSet_ExtenalUser e in externals)
                {
                    ExternalUserModel model = new ExternalUserModel();
                    model.external_user = e;
                    model.laucher = e.ProjectLaucherSet;
                    modelList.Add(model);
                }

            }
            catch (Exception ex) { }
            return View(modelList);
        }
        async void OnGoogleLogin(object sender, EventArgs args)
        {
            var userdata = await CrossGoogleClient.Current.LoginAsync();

            GoogleUser data = userdata.Data;

            ExternalUserModel userinfo = new ExternalUserModel();

            userinfo.id           = data.Id;
            userinfo.idToken      = data.Id;
            userinfo.name         = data.Name;
            userinfo.email        = data.Email;
            userinfo.profileImage = data.Picture.AbsoluteUri;

            userinfo.LoginProvider = "GOOGLE".ToUpper();
            userinfo.provider      = "GOOGLE".ToUpper();
            userinfo.Role          = "Parent".ToUpper();

            await(new RegisterServices()).RegisterExternal(userinfo);
        }
        async void OnFacebookLogin(object sender, EventArgs args)
        {
            var userdata = await CrossFacebookClient.Current.RequestUserDataAsync(new string[] { "email", "first_name", "gender", "last_name", "birthday" }, new string[] { "email", "user_birthday" });

            var data = userdata.Data;

            //var json = JsonConvert.SerializeObject(data);
            var d = JsonConvert.DeserializeObject <FacebookModel>(data);

            ExternalUserModel userinfo = new ExternalUserModel();

            //userinfo.id = data.Id;
            //userinfo.idToken = data.Id;
            //userinfo.name = data.Name;
            //userinfo.email = data.Email;
            userinfo.LoginProvider = "FACEBOOK".ToUpper();
            userinfo.provider      = "FACEBOOK".ToUpper();
            userinfo.Role          = "Parent".ToUpper();

            await(new RegisterServices()).RegisterExternal(userinfo);
        }
Example #11
0
        public async Task <GrantValidationResult> ExecuteAsync(ExternalUserModel info, string provider)
        {
            var user = await _userManager.FindByLoginAsync(provider, info.Id);

            if (user == null)
            {
                user = new UserEntity
                {
                    Email     = info.Email,
                    UserName  = info.Id,
                    FullName  = info.FullName ?? $"{info.LastName} {info.FirstName}",
                    AvatarUrl = info.AvatarUrl,
                    CreatedAt = DateTime.UtcNow
                };

                await _userManager.CreateAsync(user);
            }

            var claims = await _userManager.GetClaimsAsync(user);

            await _userManager.AddLoginAsync(user, new UserLoginInfo(provider, info.Id, provider));

            return(new GrantValidationResult(user.Id.ToString(), provider, claims, provider, null));
        }
Example #12
0
        /// <summary>
        /// RegisterExternal: External Signup i.e, Facebook & Google
        /// </summary>
        /// <param name="userModel"></param>
        /// <returns></returns>
        public async Task RegisterExternal(ExternalUserModel userModel)
        {
            try
            {
                if (CrossConnectivity.Current.IsConnected)
                {
                    HttpClient httpClient = new HttpClient();

                    var uri     = new Uri(string.Concat(Constants.baseUrl, "/api/Account/GoogleExternalSignUp"));
                    var json    = JsonConvert.SerializeObject(userModel);
                    var content = new StringContent(json, Encoding.UTF8, "application/json");

                    // var response = await httpClient.PostAsync(uri, content);

                    var requestTask = httpClient.PostAsync(uri, content);
                    var response    = Task.Run(() => requestTask);

                    string result = await response.Result.Content.ReadAsStringAsync();

                    var message = JsonConvert.DeserializeObject <ResponseModel>(result);

                    if (response.Result.IsSuccessStatusCode)
                    {
                        RegisterUserModel rum = new RegisterUserModel();

                        rum.Id            = int.Parse(message.Id);
                        rum.UserName      = userModel.name;
                        rum.Email         = userModel.email;
                        rum.LoginProvider = userModel.LoginProvider;
                        rum.Role          = userModel.Role;
                        rum.profileImage  = userModel.profileImage;

                        rum.IsRegistered = true;
                        if (userModel.Role.Equals("HELPER"))
                        {
                            HelperRegister.Instance.GotoNext(rum);
                        }
                        else
                        {
                            Register.Instance.GotoNext(rum);
                        }
                    }
                    else
                    {
                        if (userModel.Role.Equals("HELPER"))
                        {
                            HelperRegister.Instance.ShowError(message.Message);
                        }
                        else
                        {
                            Register.Instance.ShowError(message.Message);
                        }

                        Console.Write(message.Message);
                    }
                }
            }
            catch (Exception e)
            {
                Console.Write(e.StackTrace.ToString());
            }
        }