usr/src/java/vpanels/app/usermgr/com/oracle/solaris/vp/panels/usermgr/client/swing/UserMgrUtils.java
author Stephen Talley <stephen.talley@oracle.com>
Fri, 27 Apr 2012 00:52:26 -0400
changeset 847 a8e124b894b8
parent 811 c65c58b7a1f0
permissions -rw-r--r--
7095663 A GUI needed for User Management 7158462 modify RAD usermgr module to support user/role cmds functionality
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     1
/*
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     2
 * CDDL HEADER START
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     3
 *
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     5
 * Common Development and Distribution License (the "License").
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     6
 * You may not use this file except in compliance with the License.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     7
 *
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    11
 * and limitations under the License.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    12
 *
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    18
 *
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    19
 * CDDL HEADER END
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    20
 */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    21
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    22
/*
811
c65c58b7a1f0 CR7154757 rad+vpanels java package and object names need to change
devjani.ray@oracle.com <devjani.ray@oracle.com>
parents: 720
diff changeset
    23
 * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    24
 */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    25
811
c65c58b7a1f0 CR7154757 rad+vpanels java package and object names need to change
devjani.ray@oracle.com <devjani.ray@oracle.com>
parents: 720
diff changeset
    26
package com.oracle.solaris.vp.panels.usermgr.client.swing;
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    27
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    28
import java.awt.*;
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    29
import java.util.Arrays;
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    30
import javax.swing.*;
811
c65c58b7a1f0 CR7154757 rad+vpanels java package and object names need to change
devjani.ray@oracle.com <devjani.ray@oracle.com>
parents: 720
diff changeset
    31
import com.oracle.solaris.vp.panel.common.action.ActionFailedException;
c65c58b7a1f0 CR7154757 rad+vpanels java package and object names need to change
devjani.ray@oracle.com <devjani.ray@oracle.com>
parents: 720
diff changeset
    32
import com.oracle.solaris.vp.util.misc.finder.Finder;
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    33
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    34
public class UserMgrUtils {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    35
    //
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    36
    // Static data
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    37
    //
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    38
    private static final int VALID_UID = 100;
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    39
    private static final int VALID_HOMEDIRLEN = 2;
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    40
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    41
    public static void clearPassword(char[] password) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    42
	if (password != null) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    43
	    for (int i = 0; i < password.length; i++) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    44
		password[i] = 0;
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    45
	    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    46
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    47
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    48
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    49
    //
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    50
    // Validation methods
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    51
    //
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    52
    public static void validateUsername(UserMgrPanelDescriptor descriptor,
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    53
	String username) throws ActionFailedException {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    54
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    55
	// User name must be specified
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    56
	if (username.length() == 0) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    57
	    throw new ActionFailedException(
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    58
		Finder.getString("usermgr.error.username.none"));
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    59
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    60
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    61
	// Ensure that the username is valid
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    62
	if (!isValidLogin(username)) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    63
	    throw new ActionFailedException(
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    64
		Finder.getString("usermgr.error.username.bad"));
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    65
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    66
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    67
	// Ensure that username does not already exist
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    68
	if (descriptor.getUserManagedObject(username) != null) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    69
	    throw new ActionFailedException(
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    70
		Finder.getString("usermgr.error.username.exists",
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    71
		    username));
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    72
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    73
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    74
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    75
    public static void validateUserDesc(String userdesc)
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    76
	throws ActionFailedException {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    77
	// Ensure that the user description, if specified, is valid.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    78
	if (!isValidUserDesc(userdesc)) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    79
	    throw new ActionFailedException(
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    80
		Finder.getString("usermgr.error.userdesc.bad"));
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    81
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    82
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    83
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    84
    public static void validatePassword(boolean bNewUser,
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    85
	char[] pass1, char[] pass2) throws ActionFailedException {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    86
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    87
	// Ensure that the passwords match
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    88
	if (!Arrays.equals(pass1, pass2)) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    89
	    throw new ActionFailedException(
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    90
		Finder.getString("usermgr.error.pass.nomatch"));
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    91
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    92
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    93
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    94
    public static void validateUID(long uid)
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    95
	throws ActionFailedException {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    96
	// Ensure that the UID is valid
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    97
	if (uid < VALID_UID) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
    98
	    throw new ActionFailedException(
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
    99
		Finder.getString("usermgr.error.uid.bad"));
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   100
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   101
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   102
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   103
    public static void validateHomeDir(String homedir)
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   104
	throws ActionFailedException {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   105
	// Ensure that the homedir is valid
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   106
	if (!isValidHomeDir(homedir)) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   107
	    throw new ActionFailedException(
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   108
		Finder.getString("usermgr.error.homedir.bad"));
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   109
	}
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   110
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   111
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   112
    //
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   113
    // Private methods
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   114
    //
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   115
    /**
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   116
     * Determines if the provided login name is valid.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   117
     *
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   118
     * @param username the login name
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   119
     * @return {@code true} if the login name is valid, {@code false} if not
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   120
     */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   121
    private static boolean isValidLogin(String username) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   122
	/*
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   123
	 * Make sure the username:
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   124
	 * - starts with a letter
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   125
	 * - consists of letters, numbers, underscores, hypens, and periods
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   126
	 * - is between 1 and 8 characters long (arbitrary)
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   127
	 */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   128
	return (username.matches(
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   129
	    "^\\p{Alpha}[\\-\\p{Alnum}\\._]{0,7}$"));
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   130
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   131
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   132
    /**
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   133
     * Determines if the provided user description (a.k.a. full name,
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   134
     * GECOS field) is valid.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   135
     *
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   136
     * @param userdesc the user description
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   137
     * @return {@code true} if the description is valid, {@code false} if not
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   138
     */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   139
    private static boolean isValidUserDesc(String userdesc) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   140
	/*
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   141
	 * The GECOS field can't contain newlines or colons, and ampersands
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   142
	 * are treated specially.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   143
	 */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   144
	return (userdesc.length() <= 0 || !userdesc.matches(".*[:&\\n]+.*"));
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   145
    }
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   146
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   147
    /**
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   148
     * Determines if the provided homedir is valid.
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   149
     *
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   150
     * @param homedir the home directory
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   151
     * @return {@code true} if the home directory is valid, {@code false} if not
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   152
     */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   153
    private static boolean isValidHomeDir(String homedir) {
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   154
	/*
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   155
	 * Make sure the home directory:
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   156
	 * - starts with a / (an absolute path)
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   157
	 * - is a legal pathname
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   158
	 * Do not allow spaces (which is buggy!)
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   159
	 */
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   160
	return (homedir.length() >= VALID_HOMEDIRLEN &&
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   161
	    homedir.matches("^\\/[\\-\\p{Alnum}\\._\\/]+$"));
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   162
    }
847
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   163
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   164
    public static void removeIcons(JOptionPane pane) {
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   165
        Component[] comps = pane.getComponents();
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   166
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   167
	for (int i = 0; i < comps.length; i++) {
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   168
	    Component comp = comps[i];
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   169
	    if (comp instanceof JPanel) {
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   170
        	Component[] buttons = ((JPanel)comp).getComponents();
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   171
		for (int j = 0; j < buttons.length; j++) {
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   172
		    if (buttons[j] instanceof JButton) {
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   173
			((JButton)buttons[j]).setIcon(null);
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   174
		    }
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   175
		}
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   176
	    }
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   177
	}
a8e124b894b8 7095663 A GUI needed for User Management
Stephen Talley <stephen.talley@oracle.com>
parents: 811
diff changeset
   178
    }
536
2051d6c000cc 16494 - Integrate user management panel
Shadrack Kilemba <Shadrack.Kilemba@Oracle.COM>
parents:
diff changeset
   179
}