Example #1
0
        public int signIn(LoginRequestJSON req)
        {
            int userId = 0;

            using (MovieEntities db = new MovieEntities())
            {
                if (req.network.ToLower() == "local")
                {
                    string salt         = string.Empty;
                    string hashpassword = string.Empty;
                    var    salt_query   = (from u in db.Users
                                           where u.email.ToLower() == req.email.ToLower()
                                           select u).ToList();
                    foreach (var item in salt_query)
                    {
                        salt = item.salt;
                    }
                    if (!string.IsNullOrWhiteSpace(salt))
                    {
                        hashpassword = ComputeHash(salt, req.password);
                    }

                    var usr_query = (from u in db.Users
                                     where u.email.ToLower() == req.email.ToLower() && u.passwordHash == hashpassword
                                     select new { id = u.Users_ID }).FirstOrDefault();
                    if (usr_query != null)
                    {
                        userId = usr_query.id;
                    }
                }
                else
                {
                    var usr_social = (from u in db.Users
                                      join usm in db.UsersSocialMedias on u.Users_ID equals usm.Users_ID
                                      where u.email.ToLower() == req.email.ToLower() &&
                                      usm.network.ToLower() == req.network.ToLower()
                                      select new { id = u.Users_ID }).FirstOrDefault();
                    if (usr_social != null)
                    {
                        userId = usr_social.id;
                    }
                }
            }

            return(userId);
        }
        public HttpResponseMessage Login([FromBody] LoginRequestJSON lq)
        {
            req = Request;
            if (lq == null)
            {
                return(Utils.CreateEmptyErrorResponse(req));
            }

            string           hashpassword = string.Empty;
            string           errors       = "";
            ValidationResult loginres     = lvalidator.Validate(lq);

            if (!loginres.IsValid)
            {
                errors = loginres.Errors[0].ErrorMessage; // shows the first error.
                return(Utils.CreateErrorResponse(req, errors.ToString()));
            }

            int userId = users.signIn(lq);

            if (userId != 0)
            {
                // generates an JWT access token valid for 24hrs.
                string authorizekey = Utils.GenerateLogintoken(userId.ToString());
                usersessions.updateAccessToken(userId, authorizekey);

                LoginResponseJSON respo = new LoginResponseJSON();
                respo.userId       = userId.ToString();
                respo.authorizeKey = authorizekey;
                return(Utils.CreateSuccessResponse(req, respo));
            }
            else
            {
                return(Utils.CreateErrorResponse(req, "Invalid login credentials."));
            }
        }