Пример #1
0
        public async Task <ActionResult <User> > ActiveAccount(string code)
        {
            var codeBasic = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(code));
            var email     = codeBasic.Split("*")[0];
            var user      = await _context.Users.SingleOrDefaultAsync(e => e.Email == email);

            if (user.CodeOfVerification != codeBasic)
            {
                return(Ok(new { message = "code incorrect", code = -1 }));
            }



            user.EmailVerified = true;

            try
            {
                await _context.SaveChangesAsync();

                var claims = new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString()),
                    new Claim(ClaimTypes.Email, user.Email),
                    new Claim(ClaimTypes.Role, user.IdRole.ToString()),
                };

                if (user.IsActive == false)
                {
                    return(Ok(new { message = "Veuillez patienter que votre compte soit active par l'administration", code = -2 }));
                }

                return(Ok(new { code = 1, user, token = _tokkenHandler.GenerateTokken(claims) }));
            }
            catch (DbUpdateConcurrencyException ex)
            {
                return(BadRequest(new { message = ex.Message }));
            }
        }
Пример #2
0
        public async Task <ActionResult <User> > LogIn(UserDTO model)
        {
            if (string.IsNullOrEmpty(model.Email) || string.IsNullOrEmpty(model.Password))
            {
                return(Ok(new { message = "Login ou Mot sont vide", code = -4 }));
            }

            var user = await _context.Users.Where(x => x.Email == model.Email)
                       // .Include(e => e.Fonction)
                       // .Include(e => e.Service)
                       .FirstOrDefaultAsync()
            ;

            // check if Nom exists
            if (user == null)
            {
                return(Ok(new { message = "Login érroné, vous pouvez utiliser l'option de réinitialisation de mot de passe.", code = -3 }));
            }

            if (user.Password == model.Password)
            {
                // remove password before returning
                user.Password = "";

                // if (user.EmailVerified == false)
                // {
                //     return Ok(new { message = "Veuillez consulter votre boite email pour activer votre compte.", code = -1 });
                // }

                // if (user.IsActive == false)
                // {
                //     return Ok(new { message = "Veuillez patienter que votre compte soit active par l'administration", code = -2 });
                // }


                var claims = new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString()),
                    new Claim(ClaimTypes.Email, user.Email),
                    new Claim(ClaimTypes.Role, user.Profil.ToString()),
                };


                return(Ok(new { code = 1, user, token = _tokkenHandler.GenerateTokken(claims), message = "connexion réussite" }));
            }

            return(Ok(new { message = "Mot de passe érroné, vous pouvez utiliser l'option de réinitialisation de mot de passe.", code = -1 }));
        }
Пример #3
0
        public async Task <ActionResult <User> > LogIn(UserDTO model)
        {
            if (string.IsNullOrEmpty(model.Email) || string.IsNullOrEmpty(model.Password))
            {
                return(Ok(new { message = "Login ou Mot sont vide", code = -4 }));
            }

            var user = await _context.Users.SingleOrDefaultAsync(x => x.Email == model.Email);

            if (user == null)
            {
                return(Ok(new { message = "Login érroné, vous pouvez utiliser l'option de réinitialisation de mot de passe.", code = -3 }));
            }

            if (user.Password != model.Password)
            {
                return(Ok(new { message = "Mot de passe érroné, vous pouvez utiliser l'option de réinitialisation de mot de passe.", code = -1 }));
            }


            // remove password before returning
            user.Password = "";
            //  await _context.Entry(model).Reference(e => e.Role).LoadAsync();

            object         child   = null;
            NiveauScolaire niveau  = null;
            Branche        branche = null;

            if (user.Role == "student")
            {
                child = await _context.Students.Where(e => e.IdUser == user.Id).FirstOrDefaultAsync() as Student;

                if (child != null)
                {
                    niveau = await _context.NiveauScolaires.Where(e => e.Id == ((Student)child).Niveau).FirstOrDefaultAsync();

                    if (((Student)child).Branche != 0)
                    {
                        branche = await _context.Branches.Where(e => e.Id == ((Student)child).Branche).FirstOrDefaultAsync();
                    }
                }
            }
            else
            {
                child = await _context.Profs.Where(e => e.IdUser == user.Id).FirstOrDefaultAsync() as Prof;
            }


            if (user.IsActive == false)
            {
                return(Ok(new { message = "Veuillez patienter que votre compte soit active par l'administration", code = -2 }));
            }

            var claims = new Claim[]
            {
                new Claim(ClaimTypes.Name, user.Id.ToString()),
                new Claim(ClaimTypes.Email, user.Email),
                // new Claim(ClaimTypes.Role, user.Role.ToString()),
            };

            return(Ok(new { code = 1, child, niveau, branche, user, token = _tokkenHandler.GenerateTokken(claims), message = "connexion réussite" }));
        }