示例#1
0
        public async Task <IHttpActionResult> ResetClientSecret([FromBody] ResetClientSecretBindingModel model)
        {
            var client = await ClientService.GetByIdAsync(model.Id);

            var user = await UserManager.FindByEmailAsync(client.Username);

            var newClientSecret = ClientService.GenerateClientSecret();

            var clientToUpdate = new ClientDto
            {
                Id                   = model.Id,
                ClientSecret         = newClientSecret,
                Username             = client.Username,
                Active               = client.Active,
                RefreshTokenLifeTime = client.RefreshTokenLifeTime,
                ApplicationType      = ApplicationTypes.NativeConfidential,
                AllowedOrigin        = client.AllowedOrigin
            };

            var updatedClient = await ClientService.Update(clientToUpdate);

            var messageToSend = "Username: "******"<br>" + "client_id: " + client.Id +
                                "<br>" + "client_secret: " + newClientSecret;

            await UserManager.SendEmailAsync(user.Id, "Client secret changed", $"{messageToSend}");

            return(Ok(updatedClient));
        }
示例#2
0
        public async Task <IHttpActionResult> ResetMyClientSecret([FromBody] ResetClientSecretBindingModel model)
        {
            var userName = User.Identity.Name;

            if (!await ClientService.CheckUserClient(userName, model.Id))
            {
                CustomException.ThrowBadRequestException($"There is no client with id = {model.Id} associated with user: {userName}.");
            }

            var user = await UserManager.FindByEmailAsync(userName);

            var client = await ClientService.GetMyClientAsync(userName, model.Id);

            if (!client.Active)
            {
                CustomException.ThrowBadRequestException($"Client with id = {client.Id} is no more valid.");
            }

            var newClientSecret = ClientService.GenerateClientSecret();

            var clientToUpdate = new ClientDto
            {
                Id                   = model.Id,
                ClientSecret         = newClientSecret,
                Username             = userName,
                Active               = client.Active,
                RefreshTokenLifeTime = client.RefreshTokenLifeTime,
                ApplicationType      = ApplicationTypes.NativeConfidential,
                AllowedOrigin        = client.AllowedOrigin
            };

            var updatedClient = await ClientService.Update(clientToUpdate);

            var messageToSend = "Username: "******"<br>" + "client_id: " + client.Id +
                                "<br>" + "client_secret: " + newClientSecret;

            await UserManager.SendEmailAsync(user.Id, "Client secret changed", $"{messageToSend}");

            return(Ok(updatedClient));
        }