コード例 #1
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.UserEmail, Email = model.UserEmail, LockoutEnabled = false
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    // ok user je kreiran,
                    // sad snimi tvrtku i korisnika
                    UserManager.AddToRole(user.Id, "Voditelj");
                    Kompanije company = new Kompanije {
                        Naziv          = model.Naziv, OIB = model.OIB, Adresa = model.Adresa, Mjesto = model.Mjesto,
                        Telefon        = model.Telefon, RegisterDate = DateTime.Now, ActivationDate = DateTime.Now,
                        ExpirationDate = DateTime.Today.AddYears(1), Active = true
                    };
                    _db.Kompanije.Add(company);
                    int kompanijaId = await _db.SaveChangesAsync();

                    KompanijeUseri korisnik = new KompanijeUseri
                    {
                        Ime = model.Ime, Prezime = model.Prezime, CompanyId = company.Id, UserGuid = user.Id, MasterAcc = true, Active = true
                    };

                    _db.KompanijeUseri.Add(korisnik);
                    int uid = await _db.SaveChangesAsync();

                    await UserManager.AddClaimAsync(user.Id, new Claim("Cid", company.Id.ToString()));

                    await UserManager.AddClaimAsync(user.Id, new Claim("Comp", company.Naziv));

                    //await UserManager.AddClaimAsync(model.Ime + " " + model.Prezime, new Claim("imePrezime", company.Naziv));

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
コード例 #2
0
        public async Task <ActionResult> createAccForZgrada(int zgradaId)
        {
            try
            {
                var identity  = (ClaimsIdentity)User.Identity;
                var companyId = Convert.ToInt32(identity.FindFirstValue("Cid"));
                if (await _db.Zgrade.FirstOrDefaultAsync(p => p.Id == zgradaId && p.CompanyId == companyId) != null)
                {
                    var stanari = await _db.Zgrade_Stanari.Where(p => p.ZgradaId == zgradaId).ToListAsync();

                    foreach (var s in stanari.Where(p => p.UserGuid != ""))
                    {
                        var userKompanija = await _db.KompanijeUseri.FirstOrDefaultAsync(p => p.Stanarid == s.Id);

                        if (userKompanija == null)
                        {
                            var user = new ApplicationUser {
                                UserName = s.Email, Email = s.Email
                            };
                            var pass   = Membership.GeneratePassword(6, 0);
                            var result = await UserManager.CreateAsync(user, pass);

                            var company = await _db.Kompanije.FirstOrDefaultAsync(p => p.Id == companyId);

                            if (result.Succeeded)
                            {
                                //await UserManager.AddClaimAsync(company.Id.ToString(), new Claim("Cid", company.Id.ToString()));
                                //await UserManager.AddClaimAsync(company.Naziv, new Claim("Comp", company.Naziv));
                                //await UserManager.AddClaimAsync(s.Ime + " " + s.Prezime, new Claim("imePrezime", company.Naziv));
                                UserManager.AddToRole(user.Id, "Stanar");
                                var u = new KompanijeUseri {
                                    ZgradaId = zgradaId, CompanyId = company.Id, Stanarid = s.Id, MasterAcc = false, UserGuid = user.Id, Active = true
                                };
                                _db.KompanijeUseri.Add(u);
                                s.UserGuid = user.Id;
                                s.Pass     = pass;
                                s.Active   = true;
                            }
                        }
                    }
                    await _db.SaveChangesAsync();

                    return(new HttpStatusCodeResult(200));
                }
            }
            catch (Exception ex)
            {
                return(new HttpStatusCodeResult(500));
            }
            return(new HttpStatusCodeResult(500));
        }
コード例 #3
0
        public async Task <ActionResult> editUser(KompanijeUseri user)
        {
            try
            {
                var identity  = (ClaimsIdentity)User.Identity;
                var companyId = Convert.ToInt32(identity.FindFirstValue("Cid"));


                if (user.Id > 0)
                {
                    if (companyId == user.CompanyId)
                    {
                        var target = await _db.KompanijeUseri.FirstOrDefaultAsync(p => p.Id == user.Id);

                        target.Ime     = user.Ime;
                        target.Prezime = user.Prezime;
                        target.Active  = user.Active;

                        ApplicationDbContext db = new ApplicationDbContext();
                        var dbUser = await db.Users.FirstOrDefaultAsync(p => p.Id == target.UserGuid);

                        dbUser.Email = user.Email;
                        await db.SaveChangesAsync();

                        await _db.SaveChangesAsync();
                    }
                }
                else
                {
                    var newuser = new ApplicationUser {
                        UserName = user.Email, Email = user.Email, LockoutEnabled = false
                    };
                    ApplicationDbContext db = new ApplicationDbContext();
                    // 1. create instance of UserStore and pss in db context
                    var userStore = new UserStore <ApplicationUser>(db);
                    // 2. create instance of UserManager and pass in instance of UserStore we've just created
                    var usermanager = new UserManager <ApplicationUser>(userStore);
                    var result      = usermanager.Create(newuser, user.Password);
                    if (result.Succeeded)
                    {
                        KompanijeUseri u = new KompanijeUseri {
                            Active   = user.Active, CompanyId = companyId, Ime = user.Ime, Prezime = user.Prezime,
                            Stanarid = null, MasterAcc = false, UserGuid = newuser.Id
                        };
                        _db.KompanijeUseri.Add(u);
                        await _db.SaveChangesAsync();

                        return(new HttpStatusCodeResult(200));
                    }

                    else
                    {
                        return(new HttpStatusCodeResult(500));
                    }
                }

                return(new HttpStatusCodeResult(200));
            }
            catch (Exception ex)
            {
                return(new HttpStatusCodeResult(500));
            }
        }