/* * This file is part of a module with proprietary Enterprise Features. * * Licensed to Crate.io Inc. ("Crate.io") under one or more contributor * license agreements. See the NOTICE file distributed with this work for * additional information regarding copyright ownership. * * Unauthorized copying of this file, via any medium is strictly prohibited. * * To use this file, Crate.io must have given you permission to enable and * use such Enterprise Features and you must have a valid Enterprise or * Subscription Agreement with Crate.io. If you enable or use the Enterprise * Features, you represent and warrant that you have a valid Enterprise or * Subscription Agreement with Crate.io. Your use of the Enterprise Features * if governed by the terms and conditions of your Enterprise or Subscription * Agreement with Crate.io. */ package io.crate.operation.auth; import io.crate.action.sql.SessionContext; import io.crate.protocols.postgres.Messages; import org.jboss.netty.channel.Channel; import java.util.Locale; import java.util.concurrent.CompletableFuture; public class TrustAuthentication implements AuthenticationMethod { static final String NAME = "trust"; private static final String SUPERUSER = "crate"; @Override public CompletableFuture<Boolean> pgAuthenticate(Channel channel, SessionContext session) { CompletableFuture<Boolean> future = new CompletableFuture<>(); if (SUPERUSER.equals(session.userName())) { Messages.sendAuthenticationOK(channel) .addListener(f -> future.complete(true)); } else { Messages.sendAuthenticationError( channel, String.format(Locale.ENGLISH, "trust authentication failed for user \"%s\"", session.userName()) ).addListener(f -> future.complete(false)); } return future; } @Override public String name() { return NAME; } }