public ActionResult Create([Bind(Prefix = "Item1", Include = "appuserid,empid,username,password,roles")] appUser appUser)
        {
            ModelState.Clear();
            UserDD();
            var check      = appUser.empid;
            var HasAccount = db.appUsers.Where(user => user.empid == check).Select(user => user.empid).FirstOrDefault().ToString();
            var check2     = appUser.username;
            var IsExisting = db.appUsers.FirstOrDefault(user => user.username == check2);

            if (HasAccount == "")
            {
                if (IsExisting == null)
                {
                    if (ModelState.IsValid)
                    {
                        db.appUsers.Add(appUser);
                        db.SaveChanges();
                        return(RedirectToAction("Create"));
                    }
                }
                else if (IsExisting != null)
                {
                    ModelState.AddModelError("", "User name is already taken.");
                }
            }
            else if (HasAccount != "")
            {
                ModelState.AddModelError("", "Employee already has an account.");
            }

            return(View(appUser));
        }
示例#2
0
        public async Task <ActionResult <UserDto> > Register(RegisterDto newuser)
        {
            if (await UserExists(newuser.username))
            {
                return(BadRequest("Username is taken"));
            }

            using var hmac = new HMACSHA512();

            var user = new appUser
            {
                UserName     = newuser.username,
                PasswordSalt = hmac.Key,
                passwordHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(newuser.password))
            };

            await _context.Users.AddAsync(user);

            await _context.SaveChangesAsync();

            return(new UserDto
            {
                UserName = user.UserName,
                Token = _tokenService.CreateToken(user)
            });
        }
示例#3
0
        public async Task <IHttpActionResult> PostappUser(appUser appUser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.appUsers.Add(appUser);

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateException)
            {
                if (appUserExists(appUser.userName))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = appUser.userName }, appUser));
        }
 public ActionResult Login(appUser appUser)
 {
     using (kalingaPPDOEntities db = new kalingaPPDOEntities())
     {
         try
         {
             var UserCredentials = db.appUsers.Single(u => u.username == appUser.username && u.password == appUser.password);
             var Name            = db.EmpMasterProfiles.Single(n => n.empid == UserCredentials.empid);
             if (UserCredentials != null)
             {
                 RemainSession.Username   = UserCredentials.username;
                 RemainSession.Firstname  = Name.FirstName;
                 RemainSession.Lastname   = Name.LastName;
                 RemainSession.EmployeeID = UserCredentials.empid.ToString();
                 RemainSession.Roles      = UserCredentials.roles;
                 return(RedirectToAction("Index", "Dashboard"));
             }
             else
             {
                 ModelState.AddModelError("", "Username or Password is wrong");
             }
         }
         catch
         {
             ModelState.AddModelError("", "Username or Password is wrong");
         }
     }
     return(View());
 }
        // public methods
        public static appUser getUser(string login,string password) {
            appUser user = null;

            using(SqlConnection con = connectionManager.getConnection()) {
                SqlCommand com = new SqlCommand("getUser",con);
                com.CommandType = System.Data.CommandType.StoredProcedure;
                com.Parameters.AddWithValue("@login",login);
                com.Parameters.AddWithValue("@password",password);

                try {
                    con.Open();

                    SqlDataReader reader = com.ExecuteReader();
                    if(reader.HasRows) {
                        while(reader.Read()) {
                            user = new appUser();
                            user.id = Convert.ToInt32(reader["id"]);
                            user.login = login;
							user.email = reader["emailAddress"].ToString();
                            user.group = dbUserGroups.getUserGroup(Convert.ToInt32(reader["groupID"]));
                        }
                    };
                } catch { throw; };
            }

            return user;
        }
示例#6
0
        public async Task <IHttpActionResult> PutappUser(string id, appUser appUser)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != appUser.userName)
            {
                return(BadRequest());
            }

            db.Entry(appUser).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!appUserExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
		public static List<appUser> getAllUsersForGroup(int groupID) {
			List<appUser> users = new List<appUser>();

			using (SqlConnection con = connectionManager.getConnection()) {
				SqlCommand com = new SqlCommand("getAllUsersForGroup", con);
				com.CommandType = System.Data.CommandType.StoredProcedure;
				com.Parameters.AddWithValue("@groupID", groupID);

				try {
					con.Open();

					SqlDataReader reader = com.ExecuteReader();
					if (reader.HasRows) {
						while (reader.Read()) {
							appUser user = new appUser();
							user.id = Convert.ToInt32(reader["id"]);
							user.login = reader["login"].ToString();
							user.email = reader["emailAddress"].ToString();

							users.Add(user);
						}
					};
				} catch { throw; };
			}

			return users;
		}
示例#8
0
        public async Task <ActionResult <UserDTO> > Register(RegisterDTO registerDTO)
        {
            if (await UserExists(registerDTO.Username))
            {
                return(BadRequest("Username is already taken!"));
            }

            using var hmac = new HMACSHA512();

            var user = new appUser
            {
                UserName     = registerDTO.Username.ToLower(),
                PasswordHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(registerDTO.Password)),
                PasswordSalt = hmac.Key
            };

            _context.Users.Add(user);
            await _context.SaveChangesAsync();

            return(new UserDTO
            {
                Username = user.UserName,
                Token = _tokenService.CreateToken(user)
            });
        }
        public ActionResult DeleteConfirmed(int id)
        {
            appUser appUser = db.appUsers.Find(id);

            db.appUsers.Remove(appUser);
            db.SaveChanges();
            return(RedirectToAction("Create"));
        }
        // methods
        public bool setUser(string login,string password) {
            this.currentUser = dbUsers.getUser(login,password);

            if(this.currentUser != null) {
                validUserLoggedInEventArgs args = new validUserLoggedInEventArgs(login);
                validUserLoggedIn(this,args);
                return true;
            }

            return false;
        }
示例#11
0
        public async Task <IHttpActionResult> GetappUser(string id)
        {
            appUser appUser = await db.appUsers.FindAsync(id);

            if (appUser == null)
            {
                return(NotFound());
            }

            return(Ok(appUser));
        }
 public ActionResult Edit([Bind(Include = "appuserid,empid,username,password,roles")] appUser appUser)
 {
     ModelState.Clear();
     UserDD();
     if (ModelState.IsValid)
     {
         db.Entry(appUser).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Create"));
     }
     return(View(appUser));
 }
示例#13
0
        private async Task LoadAsync(appUser user)
        {
            var email = await _userManager.GetEmailAsync(user);

            Email = email;

            Input = new InputModel
            {
                NewEmail = email,
            };

            IsEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user);
        }
示例#14
0
        private async Task LoadAsync(appUser user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            Username = userName;

            Input = new InputModel
            {
                PhoneNumber = phoneNumber
            };
        }
示例#15
0
        public async Task <IHttpActionResult> DeleteappUser(string id)
        {
            appUser appUser = await db.appUsers.FindAsync(id);

            if (appUser == null)
            {
                return(NotFound());
            }

            db.appUsers.Remove(appUser);
            await db.SaveChangesAsync();

            return(Ok(appUser));
        }
        // GET: AppUsers/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            appUser appUser = db.appUsers.Find(id);

            if (appUser == null)
            {
                return(HttpNotFound());
            }
            return(View(appUser));
        }
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new appUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email }));
                    }
                    else
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
示例#18
0
        private async Task LoadSharedKeyAndQrCodeUriAsync(appUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            SharedKey = FormatKey(unformattedKey);

            var email = await _userManager.GetEmailAsync(user);

            AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey);
        }
示例#19
0
        public string CreateToken(appUser user)
        {
            List <Claim> claim = new List <Claim> {
                new Claim(JwtRegisteredClaimNames.NameId, user.UserName)
            };

            SigningCredentials cred = new SigningCredentials(_key, SecurityAlgorithms.HmacSha512Signature);

            SecurityTokenDescriptor TokenDescriptor = new SecurityTokenDescriptor {
                Subject            = new ClaimsIdentity(claim),
                Expires            = DateTime.Now.AddDays(7),
                SigningCredentials = cred
            };

            JwtSecurityTokenHandler TokenHandler = new JwtSecurityTokenHandler();
            SecurityToken           token        = TokenHandler.CreateToken(TokenDescriptor);

            return(TokenHandler.WriteToken(token));
        }
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new appUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
示例#21
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                var user = new appUser {
                    UserName = Input.Email, Email = Input.Email, PhoneNumber = Input.PhoneNumber, FullName = Input.FullName, CreatedAt = DateTime.Now
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new appUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);

                        var userId = await _userManager.GetUserIdAsync(user);

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { area = "Identity", userId = userId, code = code },
                            protocol: Request.Scheme);

                        await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                          $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                        // If account confirmation is required, we need to show the link if we don't have a real email sender
                        if (_userManager.Options.SignIn.RequireConfirmedAccount)
                        {
                            return(RedirectToPage("./RegisterConfirmation", new { Email = Input.Email }));
                        }

                        await _signInManager.SignInAsync(user, isPersistent : false, info.LoginProvider);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
示例#23
0
 public void Update(appUser user)
 {
     _context.Entry(user).State = EntityState.Modified;
 }
 public void saveGeneral(appUser setUser)
 {
     XmlReader readXML = XmlReader.Create("currentload.db");
     XmlDocument saveXML = new XmlDocument();
     saveXML.Load(readXML);
     saveXML.SelectSingleNode("//Database/Details/UserName").InnerText = setUser.Name;
     saveXML.SelectSingleNode("//Database/Details/IC").InnerText = setUser.IC;
     saveXML.SelectSingleNode("//Database/Details/Address").InnerText = setUser.HomeAddress;
     saveXML.SelectSingleNode("//Database/Details/HouseNo").InnerText = setUser.HouseNumber;
     saveXML.SelectSingleNode("//Database/Details/PhoneNo").InnerText = setUser.PhoneNumber;
     saveXML.SelectSingleNode("//Database/Details/Email").InnerText = setUser.Email;
     saveXML.Save("saveNew.db");
 }
 public appUser loadGeneral()
 {
     appUser currentUser = new appUser();
     XmlReader readXML = XmlReader.Create("currentload.db");
     while (readXML.Read())
     {
         if (readXML.NodeType == XmlNodeType.Element && readXML.Name == "Database")
         {
             while (readXML.NodeType != XmlNodeType.EndElement)
             {
                 readXML.Read();
                 if (readXML.Name == "Details")
                 {
                     while (readXML.NodeType != XmlNodeType.EndElement)
                     {
                         readXML.Read();
                         if (readXML.Name == "UserName")
                         {
                             while (readXML.NodeType != XmlNodeType.EndElement)
                             {
                                 readXML.Read();
                                 if (readXML.NodeType == XmlNodeType.Text)
                                 {
                                     currentUser.Name = readXML.Value;
                                 }
                             }
                             readXML.Read();
                         }
                         if (readXML.Name == "IC")
                         {
                             while (readXML.NodeType != XmlNodeType.EndElement)
                             {
                                 readXML.Read();
                                 if (readXML.NodeType == XmlNodeType.Text)
                                 {
                                     currentUser.IC = readXML.Value;
                                 }
                             }
                             readXML.Read();
                         }
                         if (readXML.Name == "Address")
                         {
                             while (readXML.NodeType != XmlNodeType.EndElement)
                             {
                                 readXML.Read();
                                 if (readXML.NodeType == XmlNodeType.Text)
                                 {
                                     currentUser.HomeAddress = readXML.Value;
                                 }
                             }
                             readXML.Read();
                         }
                         if (readXML.Name == "HouseNo")
                         {
                             while (readXML.NodeType != XmlNodeType.EndElement)
                             {
                                 readXML.Read();
                                 if (readXML.NodeType == XmlNodeType.Text)
                                 {
                                     currentUser.HouseNumber = readXML.Value;
                                 }
                             }
                             readXML.Read();
                         }
                         if (readXML.Name == "PhoneNo")
                         {
                             while (readXML.NodeType != XmlNodeType.EndElement)
                             {
                                 readXML.Read();
                                 if (readXML.NodeType == XmlNodeType.Text)
                                 {
                                     currentUser.PhoneNumber = readXML.Value;
                                 }
                             }
                             readXML.Read();
                         }
                         if (readXML.Name == "Email")
                         {
                             while (readXML.NodeType != XmlNodeType.EndElement)
                             {
                                 readXML.Read();
                                 if (readXML.NodeType == XmlNodeType.Text)
                                 {
                                     currentUser.Email = readXML.Value;
                                 }
                             }
                             readXML.Read();
                         }
                     }
                 }
             }
         }
     }
     readXML.Close();
     return currentUser;
 }
示例#26
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            //context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
            #region Username / Password Required
            if (string.IsNullOrWhiteSpace(context.UserName))
            {
                context.SetError("Username", "The Username is Required");
                return;
            }
            if (string.IsNullOrWhiteSpace(context.Password))
            {
                context.SetError("Password", "The Password is Required");
                return;
            }
            #endregion
            try
            {
                appUser user = Auth.UserLogin(context.UserName, context.Password);
                if (user == null)
                {
                    context.SetError("invalid_grant", "The Username or Password is incorrect.");
                    return;
                }
                if (!user.isApproved)
                {
                    context.SetError("invalid_grant", "User is not approved");
                    return;
                }
                var identity = new ClaimsIdentity(context.Options.AuthenticationType);
                identity.AddClaim(new Claim("sub", context.UserName));
                identity.AddClaim(new Claim("role", "user"));

                AuthenticationProperties props = new AuthenticationProperties(new Dictionary <string, string>()
                {
                    { "account_id", user.UserId.Value.ToString() },
                    { "username", user.username },
                    { "roles", string.Join(", ", user.roles) },
                    { "name", string.IsNullOrEmpty(user.nombre) ? "" : user.nombre },
                    { "lastlogin", user.lastlogin },
                    { "picture", string.IsNullOrEmpty(user.picture) ? "" : user.picture }
                });
                AuthenticationTicket ticket = new AuthenticationTicket(identity, props);

                context.Validated(ticket);
            }
            catch (Exception ex)
            {
                switch (ex.Message)
                {
                case "Invalid Password":
                case "User not found":
                    context.SetError("invalid_grant", "The Username or Password is incorrect.");
                    return;

                case "User locked out":
                    context.SetError("invalid_grant", "The User is Locked Out");
                    return;

                default:
                    context.SetError("invalid_grant", "Error while validating user");
                    return;
                }
            }
        }
 public void logOut() {
     this.currentUser = null;
     userLoggedOut(this,new EventArgs());
 }