コード例 #1
0
 public void Delete(RegisterApp entity)
 {
     try
     {
         var itemToRemove = _context.RegisterApps.SingleOrDefault(x => x.RegisterAppId == entity.RegisterAppId);
         _context.RegisterApps.Remove(itemToRemove);
         _context.SaveChanges();
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #2
0
        public ClientKeys CreateApp(RegisterApp app, string userId, bool keyExists, IRegisterApp appRegistrar, IClientKeys clientKeyToolkit, int appCallLimit)
        {
            app.UserID            = userId;
            app.CreatedOn         = DateTime.Now;
            app.TotalAppCallLimit = appCallLimit;
            appRegistrar.Add(app);  // this code fills RegisterAppId and adds the app to db, and should always auto-increment model.RegisterAppId to > 0

            // Generate Clientid and Secret Key
            // Validating ClientID and ClientSecret already Exists
            ClientKeys clientkeys;

            if (keyExists)
            {
                // Getting Generate ClientID and ClientSecret Key By UserID
                clientkeys = clientKeyToolkit.GetGenerateUniqueKeyByUserID(userId);
            }
            else
            {
                // reload app from DB
                app = appRegistrar.FindAppByUserId(userId);

                // Generate Keys
                String clientSecret, clientID;
                clientKeyToolkit.GenerateUniqueKey(out clientID, out clientSecret);

                // Saving Keys Details in Database
                clientkeys = new ClientKeys();
                clientkeys.ClientKeysID  = 0;
                clientkeys.RegisterAppId = app.RegisterAppId;
                clientkeys.CreatedOn     = DateTime.Now;
                clientkeys.ClientId      = clientID;
                clientkeys.ClientSecret  = clientSecret;
                clientkeys.UserID        = userId;
                clientKeyToolkit.SaveClientIDandClientSecret(clientkeys);

                // MC121517 quick and dirty hack to address the bug at app creation in ManageApp.cshtml where RegisterApps is null in @clientkeys.RegisterApps.Name
                // otherwise ManageApp.cshtml will crash
                clientkeys.RegisterApps = app;
            }

            return(clientkeys);
        }
コード例 #3
0
 public bool ValidateAppName(RegisterApp registercompany)
 {
     try
     {
         var result = (from company in _context.RegisterApps
                       where company.Name == registercompany.Name
                       select company).Count();
         if (result > 0)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception)
     {
         throw;
     }
 }
コード例 #4
0
        public ActionResult Create(ExpandedUserDTO paramExpandedUserDTO)
        {
            try
            {
                if (paramExpandedUserDTO == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                var Email    = paramExpandedUserDTO.Email.Trim();
                var UserName = paramExpandedUserDTO.Email.Trim();
                var Password = paramExpandedUserDTO.Password.Trim();

                if (Email == "")
                {
                    throw new Exception("No Email");
                }

                if (Password == "")
                {
                    throw new Exception("No Password");
                }

                // UserName is LowerCase of the Email
                UserName = Email.ToLower();

                // Create user
                var objNewAdminUser = new ApplicationUser {
                    UserName = UserName, Email = Email
                };
                var AdminUserCreateResult = UserManager.Create(objNewAdminUser, Password);

                if (AdminUserCreateResult.Succeeded == true)
                {
                    string strNewRole = Convert.ToString(Request.Form["Roles"]);

                    // Put user in role
                    if (strNewRole != "0")
                    {
                        UserManager.AddToRole(objNewAdminUser.Id, strNewRole);
                    }

                    // create app to use the arabizi
                    var userId   = objNewAdminUser.Id;
                    var appLimit = Convert.ToInt32(ConfigurationManager.AppSettings["TotalAppCallLimit"]);
                    var app      = new RegisterApp {
                        Name = userId + ".app"
                    };
                    new AppManager().CreateApp(app, userId, false, new RegisterAppConcrete(), new ClientKeysConcrete(), appLimit);

                    // create registered user
                    using (var db = new ArabiziDbContext())
                    {
                        var userguid       = Guid.Parse(userId);
                        var registeredUser = db.RegisterUsers.SingleOrDefault(m => m.UserGuid == userguid);
                        if (registeredUser == null)
                        {
                            db.RegisterUsers.Add(new RegisterUser
                            {
                                UserGuid      = userguid,
                                LastLoginTime = DateTime.Now,
                                Username      = Email,
                                Password      = Password,
                                CreateOn      = DateTime.Now,
                                EmailID       = Email,
                            });
                        }
                        else
                        {
                            registeredUser.LastLoginTime = DateTime.Now;
                        }

                        // commit
                        db.SaveChanges();
                    }

                    return(Redirect("~/Admin"));
                }
                else
                {
                    ViewBag.Roles = GetAllRolesAsSelectList();
                    ModelState.AddModelError(string.Empty, "Error: Failed to create the user. Check password requirements.");
                    return(View(paramExpandedUserDTO));
                }
            }
            catch (Exception ex)
            {
                ViewBag.Roles = GetAllRolesAsSelectList();
                ModelState.AddModelError(string.Empty, "Error: " + ex);
                return(View("Create"));
            }
        }
コード例 #5
0
        public ActionResult ManageApp(RegisterApp model)
        {
            var userId = User.Identity.GetUserId();

            //
            var keyExists = _clientKeyToolkit.IsUniqueKeyAlreadyGenerate(userId);

            ViewBag.clientExist = keyExists;
            if (keyExists)
            {
                // Getting Generate ClientID and ClientSecret Key By UserID
                ViewBag.clientkeys = _clientKeyToolkit.GetGenerateUniqueKeyByUserID(userId);
            }

            // themes : deserialize/send list of themes, plus send active theme, plus send list of tags/keywords
            var userXtrctThemes = new Arabizer().loaddeserializeM_XTRCTTHEME_DAPPERSQL(userId);
            List <M_XTRCTTHEME_KEYWORD> xtrctThemesKeywords = new Arabizer().loaddeserializeM_XTRCTTHEME_KEYWORD_Active_DAPPERSQL(userId);
            var userActiveXtrctTheme = userXtrctThemes.Find(m => m.CurrentActive == "active");

            @ViewBag.UserXtrctThemes  = userXtrctThemes;
            @ViewBag.XtrctThemesPlain = userXtrctThemes.Select(m => new SelectListItem {
                Text = m.ThemeName.Trim(), Selected = m.ThemeName.Trim() == userActiveXtrctTheme.ThemeName.Trim() ? true : false
            });
            @ViewBag.UserActiveXtrctTheme      = userActiveXtrctTheme;
            @ViewBag.ActiveXtrctThemeNegTags   = xtrctThemesKeywords.Where(m => m.Keyword_Type == "NEGATIVE" || m.Keyword_Type == "OPPOSE" || m.Keyword_Type == "EXPLETIVE" || m.Keyword_Type == "SENSITIVE").ToList();
            @ViewBag.ActiveXtrctThemePosTags   = xtrctThemesKeywords.Where(m => m.Keyword_Type == "POSITIVE" || m.Keyword_Type == "SUPPORT").ToList();
            @ViewBag.ActiveXtrctThemeOtherTags = xtrctThemesKeywords.Where(m => m.Keyword_Type != "POSITIVE" && m.Keyword_Type != "SUPPORT" && m.Keyword_Type != "NEGATIVE" && m.Keyword_Type != "OPPOSE" && m.Keyword_Type != "EXPLETIVE" && m.Keyword_Type != "SENSITIVE").ToList();

            // Fetch the data for fbPages for all themes for that user
            var fbFluencerAsTheme = new Arabizer().loadDeserializeT_FB_INFLUENCERs_DAPPERSQL(userId);

            ViewBag.AllInfluenceVert = fbFluencerAsTheme;

            // working data entries count
            List <LM_CountPerThemePerUser> entriesCountsperThemePerUser = new Arabizer().loaddeserializeM_ARABICDARIJAENTRY_CountPerThemePerUser_DAPPERSQL(userId);

            @ViewBag.EntriesCountsperThemePerUser = entriesCountsperThemePerUser;

            // fb pages comments count
            List <LM_CountPerInfluencer> commentsCountsPerInfluencer = new Arabizer().loaddeserializeT_FB_Comments_CountPerInfluencer_DAPPERSQL(userId);

            @ViewBag.CommentsCountsPerInfluencer = commentsCountsPerInfluencer;

            // fb pages posts count
            List <LM_CountPerInfluencer> postsCountsPerInfluencer = new Arabizer().loaddeserializeT_FB_Posts_CountPerInfluencer_DAPPERSQL(userId);

            @ViewBag.PostsCountsPerInfluencer = postsCountsPerInfluencer;

            // scocial searc posys count & comment count
            @ViewBag.PostsCounts    = new Arabizer().loaddeserializeT_FB_Posts_Count_DAPPERSQL();
            @ViewBag.CommentsCounts = new Arabizer().loaddeserializeT_FB_Comments_Count_DAPPERSQL();

            // GET access (ie : check app dashbord)
            if (Request.HttpMethod.ToUpper() == "GET")
            {
                return(View());
            }

            // check
            if (!ModelState.IsValid)
            {
                return(View("ManageApp", model));
            }

            // check app already registered
            if (_appRegistrar.ValidateAppName(model))
            {
                ModelState.AddModelError("", "App is Already Registered");
                return(View("ManageApp", model));
            }

            // check app already registered
            var app = _appRegistrar.CheckIsAppRegistered(userId);

            if (app == true)
            {
                return(RedirectToAction("Index"));
            }

            // register app model coming from html form
            ClientKeys clientkeys = new AppManager().CreateApp(model, userId, keyExists, _appRegistrar, _clientKeyToolkit, AppCallLimit);

            // passing them back to the view
            ViewBag.clientkeys  = clientkeys;
            ViewBag.clientExist = true;

            //
            return(View(model));
        }
コード例 #6
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // Require the user to have a confirmed email before they can log on.
            var user = await UserManager.FindByNameAsync(model.Email);

            if (user != null)
            {
                //
                // string callbackUrl = await SendEmailConfirmationTokenAsync(user);
                if (!await UserManager.IsEmailConfirmedAsync(user.Id))
                {
                    ViewBag.errorMessage = "You must have a confirmed email to log on.";
                    return(View("Error"));
                }
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                goto createDefaultTheme;

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", R.InvalidLoginAttempt);
                return(View(model));
            }

createDefaultTheme:
            // TMP DEV TIME : Create default theme if there is not any one before
            var userIdentity = SignInManager.AuthenticationManager.AuthenticationResponseGrant.Identity;
            String userId   = SignInManager.AuthenticationManager.AuthenticationResponseGrant.Identity.GetUserId();
            var    arabizer = new Arabizer();

            if (arabizer.loaddeserializeM_XTRCTTHEME_DAPPERSQL(userId).Count == 0)
            {
                arabizer.saveserializeM_XTRCTTHEME_EFSQL(new M_XTRCTTHEME
                {
                    ID_XTRCTTHEME = Guid.NewGuid(),
                    CurrentActive = "active",
                    ThemeName     = "Default",
                    UserID        = userId
                });
            }

            // create Default App For Admin (and actually any new user) first time
            if (arabizer.loaddeserializeRegisterApp_DAPPERSQL(userId).Count == 0)
            {
                // create app to use the arabizi
                var appLimit = Convert.ToInt32(ConfigurationManager.AppSettings["TotalAppCallLimit"]);
                var app      = new RegisterApp {
                    Name = userId + ".app"
                };
                new AppManager().CreateApp(app, userId, false, new RegisterAppConcrete(), new ClientKeysConcrete(), appLimit);
            }

            // create registered user
            using (var db = new ArabiziDbContext())
            {
                var userguid       = Guid.Parse(userId);
                var registeredUser = db.RegisterUsers.SingleOrDefault(m => m.UserGuid == userguid);
                if (registeredUser == null)
                {
                    db.RegisterUsers.Add(new RegisterUser
                    {
                        UserGuid      = userguid,
                        LastLoginTime = DateTime.Now,
                        Username      = model.Email,
                        Password      = model.Password,
                        CreateOn      = DateTime.Now,
                        EmailID       = model.Email,
                    });
                }
                else
                {
                    registeredUser.LastLoginTime = DateTime.Now;
                }

                // commit
                db.SaveChanges();
            }

            // log login time
            using (var db = new ArabiziDbContext())
            {
                var userguid       = Guid.Parse(userId);
                var registeredUser = db.RegisterUsers.SingleOrDefault(m => m.UserGuid == userguid);
                if (registeredUser == null)
                {
                    db.RegisterUsers.Add(new RegisterUser
                    {
                        UserGuid      = userguid,
                        LastLoginTime = DateTime.Now,
                        Username      = model.Email,
                        Password      = model.Password,
                        CreateOn      = DateTime.Now,
                        EmailID       = model.Email,
                    });
                }
                else
                {
                    registeredUser.LastLoginTime = DateTime.Now;
                }

                // commit
                db.SaveChanges();
            }

            //
            // return RedirectToAction("Index", "Train");
            // return RedirectToAction("IndexTranslateArabizi", "Train");
            return(RedirectToAction("IndexSplash", "Train"));
        }